使用格式化程序用0填充字符串

时间:2011-05-30 19:54:46

标签: java formatter

我知道我可以使用以下内容填充空格:

String.format("%6s", "abc"); // ___abc ( three spaces before abc

但我似乎无法找到如何制作:

000abc

编辑:

我在问这个之前试过%06s。只是在更多(未经验证的)答案出现之前让你知道。

目前我有:String.format("%6s", data ).replace(' ', '0' )但我认为必须有更好的方法。

5 个答案:

答案 0 :(得分:6)

您应该考虑使用Apache Commons Lang中的StringUtils来执行此类字符串操作任务,因为您的代码将更具可读性。您的示例是StringUtils.leftPad("abc", 6, ' ');

答案 1 :(得分:1)

尝试滚动自己的静态实用程序方法

public static String leftPadStringWithChar(String s, int fixedLength, char c){

    if(fixedLength < s.length()){
        throw new IllegalArgumentException();
    }

    StringBuilder sb = new StringBuilder(s);

    for(int i = 0; i < fixedLength - s.length(); i++){
        sb.insert(0, c);
    }

    return sb.toString();
}

然后使用它,就这样

System.out.println(leftPadStringWithChar("abc", 6, '0'));

<强>输出

000abc

答案 2 :(得分:1)

无论如何,找一个你喜欢的库来获取这类东西并了解你闪亮的新工具箱中的内容,这样你就可以重新发明更少的轮子(有时会有平面)。我更喜欢Guava到Apache Commons。在这种情况下,它们是等价的:

Strings.padStart("abc",6,'0');

答案 3 :(得分:0)

快速和脏(将“000 .... 00”字符串的长度设置为您支持的最大len):

public static String lefTpadWithZeros(String x,int minlen) {
   return x.length()<minlen ? 
       "000000000000000".substring(0,minlen-x.length()) + x : x;     
}

答案 4 :(得分:-1)

I think this is what you're looking for.

String.format("%06s", "abc");