Java 8:从Long生成字符串ID

Ran*_*aul 1 java string groovy java-8

下面是我用来生成一个字符串引用id的方法,它的长度为12,以'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();
}
Run Code Online (Sandbox Code Playgroud)

以下是用例

Input           Output
12345       X00000012345
999999999   X00999999999 
Run Code Online (Sandbox Code Playgroud)

上面的方法工作正常,但我想知道上述方法是否可以使用java 8进一步优化?

cfr*_*ick 9

你可以用String.format.例如

String.format("X%011d", 4366)
Run Code Online (Sandbox Code Playgroud)

这会0在左侧填充数字.但请注意,数字越大,将占用更多空间.

groovy:000> String.format("X%011d", 4366)
===> X00000004366
groovy:000> String.format("X%011d", 111111111111)
===> X111111111111
Run Code Online (Sandbox Code Playgroud)

  • 自Java 5以来,这一直可用. (4认同)