6

我知道我可以使用以下方法填充空格:

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

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

000abc

编辑:

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

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

4

5 回答 5

7

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

于 2011-05-30T20:02:25.060 回答
1

无论如何,为这类东西找到一个你喜欢的图书馆,并了解你闪亮的新工具箱里有什么,这样你就可以重新发明更少的轮子(有时有平面)。我更喜欢Guava而不是 Apache Commons。在这种情况下,它们是等价的:

Strings.padStart("abc",6,'0');
于 2011-07-09T03:36:42.953 回答
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
于 2011-05-30T22:36:34.967 回答
0

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

public static String lefTpadWithZeros(String x,int minlen) {
   return x.length()<minlen ? 
       "000000000000000".substring(0,minlen-x.length()) + x : x;     
}
于 2011-05-30T20:43:11.723 回答
-1

我想这就是你要找的。

String.format("%06s", "abc");
于 2011-05-30T19:57:10.413 回答