Java 如何填充格式化字符串

Java 如何填充格式化字符串,java,Java,这似乎是一个简单的问题,但老实说,我似乎没有解决这个问题。 我有一个格式化字符串,如下所示: String msg = String.format("Current player: %1$s", status.getCurrentPlayer().getName()); 我想用10个空格来填充它。我试过: String pad = String.format("%1$10s", msg); 但它似乎不起作用,尽管我用了一个未格式化的字符串: String pad = String.forma

这似乎是一个简单的问题,但老实说,我似乎没有解决这个问题。
我有一个格式化字符串,如下所示:

String msg = String.format("Current player: %1$s", status.getCurrentPlayer().getName());
我想用10个空格来填充它。我试过:

String pad = String.format("%1$10s", msg);
但它似乎不起作用,尽管我用了一个未格式化的字符串:

String pad = String.format("%1$10s", "some string");
显然,它起了作用。
“味精”有什么不让我填的

“味精”有什么不让我填的

超过10个字符

10
是类的宽度

阅读这些文档,您将看到

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

所以,最小值,意味着任何长度超过该值的字符串都按原样打印

如果要填充,只需在字符串长度上加10

String msg = "some really, really long message";
String fmt = "%1$" + (10 + msg.length()) + "s";
String pad = String.format(fmt, msg);
// "          some really, really long message"
这将在玩家姓名后添加10个空格。如果要考虑球员姓名的长度,可以执行以下操作:

String msg = "Current player: " 
             + status.getCurrentPlayer().getName() 
             + new String(new 
                   char[10 - status.getCurrentPlayer().getName().Length ]).replace('\0', ' ');

$10
可容纳10个空格。它不填充10个空格。换句话说,
“Current pl”
本身就是10个字符。任何更长的空间都不能填充,所以$x总共提供了x个空间。我以前没听说过。谢谢。只需要
x
,而不是
$
。定位为
1$
。格式化程序以
%
启动,字符串转换为
s
String msg = "Current player: " 
             + status.getCurrentPlayer().getName() 
             + new String(new 
                   char[10 - status.getCurrentPlayer().getName().Length ]).replace('\0', ' ');