使用 Java 字符串格式格式化整数

发布于 2024-11-08 04:32:03 字数 397 浏览 2 评论 0原文

我想知道是否可以使用 Java 中的 String.format 方法给出一个前面有零的整数?

例如:

1会变成001
2会变成002
...
11 将变成 011
12 将变成 012
...
526 仍为 526
...etc

目前我已经尝试过以下代码:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

不幸的是,这在数字前面有 3 个空格。是否可以在数字前面加零?

I am wondering if it is possible, using the String.format method in Java, to give an integer preceding zeros?

For example:

1 would become 001
2 would become 002
...
11 would become 011
12 would become 012
...
526 would remain as 526
...etc

At the moment I have tried the following code:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

Unfortunately, this precedes the number with 3 empty spaces. Is it possible to precede the number with zeros instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

自找没趣 2024-11-15 04:32:03
String.format("%03d", 1)  // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

请参阅 java.util.Formatter 了解更多信息。

String.format("%03d", 1)  // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

See java.util.Formatter for more information.

夏夜暖风 2024-11-15 04:32:03

在整数的格式说明符中使用 %03d0 表示如果数字少于三位(在本例中),则该数字将以零填充。

请参阅 Formatter 文档其他修饰符。

Use %03d in the format specifier for the integer. The 0 means that the number will be zero-filled if it is less than three (in this case) digits.

See the Formatter docs for other modifiers.

熊抱啵儿 2024-11-15 04:32:03

如果您使用的是名为 apache commons-lang 的第三方库,以下解决方案可能会很有用:

使用 apache commons-lang

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

因为 StringUtils.leftPad()String.format() 更快

If you are using a third party library called apache commons-lang, the following solution can be useful:

Use StringUtils class of apache commons-lang :

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

As StringUtils.leftPad() is faster than String.format()

若有似无的小暗淡 2024-11-15 04:32:03

而不是使用 String.format(**)。如果您使用为此类目的而构建的 DecimalFormat java API,那就太好了。让我用代码解释一下

    String pattern = "000";
   double value = 12; //can be 536 or any 
   DecimalFormat formatter = new DecimalFormat(pattern);
   String formattedNumber = formatter.format(value);
   System.out.println("Number:" + value + ", Pattern:" +
                pattern + ", Formatted Number:" +
                formattedNumber);

Instead of using String.format(**). it's good if you use DecimalFormat java API which builds for this type of purposes.Let me explain with code

    String pattern = "000";
   double value = 12; //can be 536 or any 
   DecimalFormat formatter = new DecimalFormat(pattern);
   String formattedNumber = formatter.format(value);
   System.out.println("Number:" + value + ", Pattern:" +
                pattern + ", Formatted Number:" +
                formattedNumber);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文