我需要用破折号将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;
}
我可以用字符串格式更干净地做同样的事情吗?
由于
答案 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(' ', '-')
java.util.Formatter
- 完整格式化语法