0

我正在尝试按如下方式格式化字符串

System.out.println("unique number is :"+ number[b]);
System.out.println("unique number formatted to 28  is :"+ String.format("%-28s",number[b]).replace(' ','0'))

当“数字”是一个短于 28 的字符串时没有问题,它将 0 添加到左侧,但是当字符串长于 28 时它不会缩短它,我做错了什么吗?

它是从循环中提取的 BTW

非常感谢

4

2 回答 2

1

格式化程序不会削​​减你的String,它只确保它使用至少 28 个空格。

您必须执行以下操作:

if (str.length() > 28) {
    str = str.subString(0, 28);
}

或许

if (str.length() > 28) {
    str = str.subString(str.length() - 28, str.length());
}

来限制大小。

于 2013-04-09T07:56:44.773 回答
0

format从类的 javadoc 中可以清楚地看出无法按预期工作的原因java.util.Formatter。它说:

“可选宽度是一个非负十进制整数,指示要写入输出的最小字符数。”

于 2013-04-09T08:20:06.310 回答