如果它的等效字符串长度小于6,我想在整数前加零。类似于String.format。示例:
int e = 21;
System.out.println(String.format("%06d", e)); //000021
int e = 3564;
System.out.println(String.format("%06d", e)); //003564
我需要的是上述输入210000
和356400
末尾加零。是否已经实施了某些工作,或者我需要自己编写代码?如果是这样,如何处理可变长度?
答案 0 :(得分:4)
while (e < 100_000) e *= 10;
不言自明。我认为没有比这更简单的方法了。
编辑:
由于e
可以为0,因此将上面的语句包装到一个函数中:
public static String pad(int input) {
if (input == 0) return "000000";
while (input < 100_000) input *= 10;
return "" + input;
}
答案 1 :(得分:4)
如果想做类似what Dimitri suggests的事情,但又不想依赖外部库,则可以编写一些方法:
StringBuilder sb = new StringBuilder(6);
sb.append(e);
sb.append("000000", Math.min(sb.length(), 6), 6);
return sb.toString();
答案 2 :(得分:1)
如果可以使用StringUtils,则可以使用rightPad
方法:
StringUtils.rightPad(String.valueOf(e), 6, "0");
答案 3 :(得分:1)
以下方法用提供的字符填充提供的字符串,直到达到字段宽度为止。
public static String rightPad(String str, int fieldwidth, char c) {
StringBuilder sb = new StringBuilder(str);
while (fieldwidth > sb.length()) {
sb.append(c);
}
return sb.toString();
}
示例:要用两个零填充1234,请执行以下操作:
int v = 1234;
String padded = rightPad(Integer.toString(v), 6, '0');