String.format()填充字符串?

use*_*114 4 java

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

cow-----8
cow-----9
cow----10
...
cow---100
Run Code Online (Sandbox Code Playgroud)

字符串的总长度需要为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;
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

pol*_*nts 10

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

这打印:

cow-----1
cow----12
cow---123
cow--1234
cow-12345
cow123456
Run Code Online (Sandbox Code Playgroud)

关键表达是这样的:

String.format("%6d", num).replace(' ', '-')
Run Code Online (Sandbox Code Playgroud)

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

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

String.format("cow%6d", num).replace(' ', '-')
Run Code Online (Sandbox Code Playgroud)

也可以看看