java - Java printf:如何通过转换隐式定义/声明空格?
问题描述
在Java中具有以下
printf("%-5s Hello %s %n", "", "There!")
它打印
Hello There!
左侧有 5 个空位。
直到这里它按预期工作,但是......
我想知道是否可能:如何避免""
声明并更改%-5s
为printf
可以解释表示空白的内容?
我的意思是:例如%-5e
,假设e代表一个空字符,因此不再需要""
显式声明。
类似于%n
不需要通过printf
. 很明显,%s
需要一个参数,在这种情况下""
,但很好奇我的请求是否可以完成。
我阅读了所需功能的Formatter javadoc,但似乎不存在。
我已经对 SO 进行了研究,一些建议的解决方案是使用+
inside 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!");
由于indent
还规范了行终止字符,您还可以删除%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!
推荐阅读
- c++ - 类自己的指针指向的数组的大小是多少?
- r - 注销密码闪亮的应用程序
- jquery - 如何将段落的值传递给控制器
- magento - Magento2 缺货相关产品未显示在可配置产品的下拉选项中
- python - 比较多个文本文件,并保存公用值
- apache2 - 如何解决 modsec_audit.log 错误
- google-apps-script - 在 Google 应用程序脚本(Google Drive API / REST V2)中调用 Drive.Files.get(fileId,{alt: 'media'}) 时出错
- c# - 如何将文本从一种形式同步到另一种形式?
- visual-studio-2017 - VS2017打开.sln会自动打开相同的文件
- database - 如何在 postgresql 中镜像整个数据库集群