在Java有以下
printf("%-5s Hello %s %n", "", "There!")
它打印
Hello There!
其中左侧有5个空位。
在这之前,一切都按预期进行,但是。。。
我想知道是否有可能:如何避免“”
声明,并将%-5s
更改为printf
可以解释的表示空白的内容?
我的意思是:例如%-5e
,其中e被假定为表示空字符,因此不再需要显式声明“”
。
类似于%n
,其中它不需要通过printf
提供参数。 很清楚%s
需要一个参数,在本例中是“”
,但我想知道我的请求是否可以完成。
我阅读了格式化程序javadoc以获得所需的特性,但似乎并不存在。
我已经对SO进行了研究,一些建议的解决方案是在printf
中使用+
,但老实说,它降低了可读性
因此,目标是(格式化以更好地显示):
From: printf("%-5s Hello %s %n", "", "There!")
To: printf("%-5e Hello %s %n", "There!") // %-5e is the functionality I need or looking for
如果您使用的是Java 12或更高版本,并且您所需要的只是调整结果字符串的缩进,那么您可以使用string#indent
。 使用您的示例在开头插入5个空格:
System.out.printf("Hello %s %n".indent(5), "There!");
由于缩进
也将行终止字符规范化,因此您也可以删除%n
System.out.printf("Hello %s ".indent(1), "There!");
System.out.printf("Hello %s ".indent(2), "There!");
System.out.printf("Hello %s ".indent(3), "There!");
System.out.printf("Hello %s ".indent(4), "There!");
获得以下内容:
Hello There!
Hello There!
Hello There!
Hello There!