下面是我用来生成一个长度为12的字符串引用id的方法,它以'X'开头,以输入number
结束,String的中间用零填充
public String generateRefId(Long number){
int digits = 1 + (int)Math.floor(Math.log10(number));
int length = 11 - digits;
StringBuilder refid = new StringBuilder(12);
refid.append('X');
for(int i= length;i> 0;i--) {
refid.append('0');
}
refid.append(number);
Assert.assertEquals(refid.length(),12);
return refid.toString();
}
以下是用例
Input Output
12345 X00000012345
999999999 X00999999999
上面的方法工作正常,但我想知道上述方法是否可以使用java 8进一步优化?
答案 0 :(得分:9)
您可以使用String.format
。 E.g。
String.format("X%011d", 4366)
这会在左侧填充0
的数字。但请注意,数字越大,占用的空间越大。
groovy:000> String.format("X%011d", 4366)
===> X00000004366
groovy:000> String.format("X%011d", 111111111111)
===> X111111111111
答案 1 :(得分:3)
IFF番石榴是一种选择,这将更容易:
String input = "12345";
System.out.println("X" + Strings.padStart(input, 11, '0'));
答案 2 :(得分:2)
在Groovy中,自1.0:
'X' + input.padLeft(11, '0')
答案 3 :(得分:1)
作为替代方案,apache-commons-lang提供StringUtils.leftPad()
method:
public static String leftPad(final String str, final int size, final char padChar)
你可以写:
String input = "999999999";
String formatedValue = "X" + StringUtils.leftPad(input, 11, '0');