我想在字符串前添加一些零,使总长度为八个字符。例如:
123 应该是 00000123 1243 应该是 00001234 123456 应该是 00123456 12345678 应该是 12345678
最简单的方法是什么?
123 应该是 00000123 1243 应该是 00001234 123456 应该是 00123456 12345678 应该是 12345678
最简单的方法是什么?
一个俗套的小技巧
String str = "123";
String formatted = ("00000000" + str).substring(str.length())
如果您从一个数字开始:
Int number = 123;
String formatted = String.format("%08d", number);
("00000000" + number)
操作,它将以字符串形式提供结果。但第二个选项会更安全。 - pablisco使用 String.format()
方法,它已经有相应的格式化参数了:
String.format("%08d", myInteger);
更一般地,参见Formatter
的Java文档。它有很多好玩的东西 - 比你第一眼看到的更多。
使用 Apache Common Langs 库:
StringUtils.leftPad(str, 8, '0');
DecimalFormat
:static public void main(String[] args) {
int vals[] = {123, 1243, 123456, 12345678};
DecimalFormat decimalFormat = new DecimalFormat("00000000");
for (int val : vals) {
System.out.println(decimalFormat.format(val));
}
}
输出:
00000123
00001243
00123456
12345678
System.out.println(padStr(123, "0", 8));
System.out.println(padStr(1234, "0", 8));
System.out.println(padStr(123456, "0", 8));
System.out.println(padStr(12345678, "0", 8));
public String padStr(int val, String pad, int len) {
String str = Integer.toString(val);
while (str.length() < len)
str = pad + str;
return str;
}
public static void main(String[] args)
{
String stringForTest = "123";
int requiredLengthAfterPadding = 8;
int inputStringLengh = stringForTest.length();
int diff = requiredLengthAfterPadding - inputStringLengh;
if (inputStringLengh < requiredLengthAfterPadding)
{
stringForTest = new String(new char[diff]).replace("\0", "0")+ stringForTest;
}
System.out.println(stringForTest);
}