如何在整数的左侧填充零?
在java中转换为String
时,如何将int
用零填充?
我基本上希望用前导零填充最大 9999
的整数(例如 1 = 0001
)。
How do you left pad an int
with zeros when converting to a String
in java?
I'm basically looking to pad out integers up to 9999
with leading zeros (e.g. 1 = 0001
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(19)
使用
java.lang.String.format(String,Object...)
像这样:用于长度为 5 的零填充。对于十六进制输出,请将
d
与x
如“%05x”
中所示。完整的格式化选项记录为
java 的一部分.util.Formatter
。Use
java.lang.String.format(String,Object...)
like this:for zero-padding with a length of 5. For hexadecimal output replace the
d
with anx
as in"%05x"
.The full formatting options are documented as part of
java.util.Formatter
.假设您要将
11
打印为011
您可以使用格式化程序:
"%03d"
。你可以像这样使用这个格式化程序:
或者,一些java方法直接支持这些格式化程序:
Let's say you want to print
11
as011
You could use a formatter:
"%03d"
.You can use this formatter like this:
Alternatively, some java methods directly support these formatters:
如果您出于任何原因使用 1.5 之前的 Java,那么可以尝试使用 Apache Commons Lang 方法
If you for any reason use pre 1.5 Java then may try with Apache Commons Lang method
找到这个例子...将测试...
测试了这个并且:
两者都有效,就我的目的而言,我认为 String.Format 更好、更简洁。
Found this example... Will test...
Tested this and:
Both work, for my purposes I think String.Format is better and more succinct.
试试这个:
Try this one:
以下是如何在不使用
DecimalFormat
的情况下格式化字符串。String.format("%02d", 9)
String.format("%03d", 19)
字符串.format("%04d", 119)
Here is how you can format your string without using
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
如果性能对您的情况很重要,您可以自己完成,与
String.format
函数相比,开销更少:性能
结果
自己函数: 1697ms
字符串格式: 38134ms
If performance is important in your case you could do it yourself with less overhead compared to the
String.format
function:Performance
Result
Own function: 1697ms
String.format: 38134ms
您可以使用 Google Guava:
Maven:
示例代码:
注意:
Guava
是非常有用的库,它还提供了很多与Collections
、相关的功能缓存
、函数惯用语
、并发
、字符串
、基元
、范围
>、IO
、Hashing
、EventBus
等参考:GuavaExplained
You can use Google Guava:
Maven:
Sample code:
Note:
Guava
is very useful library, it also provides lots of features which related toCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, etcRef: GuavaExplained
虽然上面的许多方法都很好,但有时我们需要格式化整数和浮点数。 我们可以使用它,特别是当我们需要在十进制数的左侧和右侧填充特定数量的零时。
Although many of the above approaches are good, but sometimes we need to format integers as well as floats. We can use this, particularly when we need to pad particular number of zeroes on left as well as right of decimal numbers.
如果您想将格式化文本直接打印到屏幕上。
if you want to print the formatted text directly onto the screen.
您需要使用格式化程序,以下代码使用 数字格式
You need to use a Formatter, following code uses NumberFormat
使用 DecimalFormat 类,如下所示:
输出: 0000811
Use the class DecimalFormat, like so:
OUTPUT : 0000811
在 Kotlin 中,您可以使用 format() 函数。
其中,2是要显示的总位数(包括零)。
输出:05
In Kotlin, you can use format() function.
where, 2 is the total number of digits you want to display(including zero).
Output: 05
如果您使用的是 Java 15 及更高版本,
其中 2 是您要显示的总位数(包括零)。
这使用了调用的字符串实例方法的
formatted
方法部分,其作用与静态String.format(str,x,y,z)
相同If you are on Java 15 and above,
where, 2 is the total number of digits you want to display(including zero).
This uses
formatted
method part of instance method on Strings called which does the same as the staticString.format(str,x,y,z)
检查我的代码是否适用于整数和字符串。
假设我们的第一个数字是 2。我们想在其中添加零,因此最终字符串的长度将为 4。为此,您可以使用以下代码
Check my code that will work for integer and String.
Assume our first number is 2. And we want to add zeros to that so the the length of final string will be 4. For that you can use following code
您可以像这样在字符串中添加前导 0。 定义一个字符串,该字符串将是所需字符串的最大长度。 就我而言,我需要一个只有 9 个字符长的字符串。
输出:000602939
You can add leading 0 to your string like this. Define a string that will be the maximum length of the string that you want. In my case i need a string that will be only 9 char long.
Output : 000602939
使用这个简单的 Kotlin 扩展函数
Use this simple Kotlin Extension function
不需要包:
这会将字符串填充为三个字符,并且很容易添加四个或五个字符的部分。 我知道这无论如何都不是完美的解决方案(特别是如果您想要一个大的填充字符串),但我喜欢它。
No packages needed:
This will pad the string to three characters, and it is easy to add a part more for four or five. I know this is not the perfect solution in any way (especially if you want a large padded string), but I like it.
这是在整数左侧填充零的另一种方法。 您可以根据自己的方便增加零的数量。 添加了一项检查,以返回与负数或大于或等于配置的零的值相同的值。 您可以根据您的要求进一步修改。
输入
0
7
13
713
7013
9999
输出
0000
0007
0013
7013
9999
Here is another way to pad an integer with zeros on the left. You can increase the number of zeros as per your convenience. Have added a check to return the same value as is in case of negative number or a value greater than or equals to zeros configured. You can further modify as per your requirement.
Input
0
7
13
713
7013
9999
Output
0000
0007
0013
7013
9999