我需要生成固定长度的字符串来生成基于字符位置的文件。缺少的字符必须用空格字符填充。
例如,字段 CITY 的长度固定为 15 个字符。对于输入“芝加哥”和“里约热内卢”,输出是
“ 芝加哥”
“ 里约热内卢”
.
原文由 Rafael Borja 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要生成固定长度的字符串来生成基于字符位置的文件。缺少的字符必须用空格字符填充。
例如,字段 CITY 的长度固定为 15 个字符。对于输入“芝加哥”和“里约热内卢”,输出是
“ 芝加哥”
“ 里约热内卢”
.
原文由 Rafael Borja 发布,翻译遵循 CC BY-SA 4.0 许可协议
利用 String.format
的空格填充并将它们替换为所需的字符。
String toPad = "Apple";
String padded = String.format("%8s", toPad).replace(' ', '0');
System.out.println(padded);
打印 000Apple
。
更新 更高性能的版本(因为它不依赖 String.format
),空格没有问题(感谢 Rafael Borja 的提示)。
int width = 10;
char fill = '0';
String toPad = "New York";
String padded = new String(new char[width - toPad.length()]).replace('\0', fill) + toPad;
System.out.println(padded);
打印 00New York
。
但是需要添加检查以防止尝试创建具有负长度的 char 数组。
原文由 mike 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
从 Java 1.5 开始,我们可以使用方法 java.lang.String.format(String, Object…) 并使用类似于格式的 printf。
格式字符串
"%1$15s"
完成工作。其中1$
表示参数索引,s
表示参数是一个字符串,15
表示字符串的最小宽度。把它们放在一起:"%1$15s"
。对于一般方法,我们有:
也许有人可以建议另一种格式字符串来用特定字符填充空白区域?