Java字符串格式数组

Java字符串格式数组,java,arrays,string,format,Java,Arrays,String,Format,我正试图格式化一个字符串,如下所示 System.out.println("unique number is :"+ number[b]); System.out.println("unique number formatted to 28 is :"+ String.format("%-28s",number[b]).replace(' ','0')) 当“number”是一个短于28的字符串时没有问题,它会在左侧添加0,但当字符串长于28时它不会缩短它,我是否做错了什么 顺便说一句,这是

我正试图格式化一个字符串,如下所示

System.out.println("unique number is :"+ number[b]);
System.out.println("unique number formatted to 28  is :"+ String.format("%-28s",number[b]).replace(' ','0'))
当“number”是一个短于28的字符串时没有问题,它会在左侧添加0,但当字符串长于28时它不会缩短它,我是否做错了什么

顺便说一句,这是一个循环的摘录


非常感谢

格式化程序不会剪切您的
字符串
,它只会确保至少使用28个空格

您必须执行以下操作:

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

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

限制大小。

类的javadoc清楚地说明了
格式不能按预期工作的原因。它说:

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


你想要什么样的短发?通常,通过切割数字来缩短数字是没有意义的。