String.format()填充字符串?

时间:2010-08-10 15:42:37

标签: java

我需要用破折号将String填充到一定长度,例如:

cow-----8
cow-----9
cow----10
...
cow---100

字符串的总长度必须为9.前缀“cow”是常量。我正在迭代输入数字。我可以用丑陋的方式做到这一点:

String str = "cow";
for (int i = 0; i < 1000; i++) {
    if (i < 10) {
        str += "-----";
    } 
    else if (i < 100) {
        str += "----";
    }
    else if (i < 1000) {
        str += "---";
    }
    else if (i < 10000) {
        str += "--";
    }
    str += i;
}

我可以用字符串格式更干净地做同样的事情吗?

由于

1 个答案:

答案 0 :(得分:10)

    int[] nums = { 1, 12, 123, 1234, 12345, 123456 };
    for (int num : nums) {
        System.out.println("cow" + String.format("%6d", num).replace(' ', '-'));
    }

打印:

cow-----1
cow----12
cow---123
cow--1234
cow-12345
cow123456

关键表达是:

String.format("%6d", num).replace(' ', '-')

这使用String.format,数字转换,宽度6右对齐填充空格。然后我们用replace每个空格(如果有的话)用破折号。

可选地,由于前缀在这种特殊情况下不包含任何空格,您可以将牛带入:

String.format("cow%6d", num).replace(' ', '-')

另见