我有一个字符串,说:
String s = "0123456789";
我想用格式化程序填充它。我可以用两种方式做到这一点:
String.format("[%1$15s]", s); //returns [ 0123456789]
或
String.format("[%1$-15s]", s); // returns [0123456789 ]
如果我想截断我做的文字
String.format("[%1$.5s]", s); // returns [01234]
如果我想从左侧截断,我想我可以这样做:
String.format("[%1$-.5s]", s); // throws MissingFormatWidthException
但这失败了,所以我尝试了这个:
String.format("[%1$-0.5s]", s); // throws MissingFormatWidthException
以及:
String.format("[%1$.-5s]", s); // throws UnknownFormatConversionException
那么如何使用格式标志从左侧截断?
答案 0 :(得分:5)
-
标志用于对齐,似乎与截断无关。
.
用于“精度”,显然转换为字符串参数的截断。
我认为格式字符串不支持从左侧截断。你必须诉诸
String.format("[%.5s]", s.length() > 5 ? s.substring(s.length()-5) : s);
答案 1 :(得分:5)
我希望这就是你所需要的:
System.out.println("'" + String.format("%-5.5s", "") + "'");
System.out.println("'" + String.format("%-5.5s", "123") + "'");
System.out.println("'" + String.format("%-5.5s", "12345") + "'");
System.out.println("'" + String.format("%-5.5s", "1234567890.....") + "'");
输出长度始终为5:
'' - 填充5个空格
'123' 在之后填充了2个空格
'12345' - 等于
'12345' - 截断
另外:
System.out.println("'" + String.format("%5.5s", "123") + "'");
输出:
'123' 在之前填充2个空格
答案 2 :(得分:-1)
您还可以使用方法来操作字符串
substring(startindex, endIndex)
返回一个字符串对象,该对象启动指定的索引,但不包括结束索引。
也可以尝试使用StringBuilder类。