我正在编写一个程序,并陷入以下要求:
输出到固定格式文件
Total 1 Total 2
---------------- ----------------
311,862.33 23,456.00
40,000.00 789,123.00
如上例所示,金额字符串的长度有所不同。
要求金额应始终从“连字符”末尾开始。
如何实现这一目标?
我知道字符串的左右填充可以通过以下方式实现:
String.format("%1$#20s", "311,862.33");
String.format("%1$-15s", "12345");
但是在我的情况下,每行都有多个字符串并且字符串长度是动态的,如何实现?
发现下面的代码将金额格式化为单列。但是如何对多列(即同一行中的多个金额)实现相同的效果?
String format = "%10.2f\n"; // width == 10 and 2 digits after the dot
float [] floats = {123.45f, 99.0f, 23.2f, 45.0f};
for(int i=0; i<floats.length; i++) {
float value = floats[i];
System.out.format(format, value);
}
这将给出输出:
123.45
99.00
23.20
45.00
感谢您的阅读!
最佳答案
我会使用 StringBuilder 并通过跟踪计数器中的行长度来自己添加填充。
这不是最快或简洁的方法,但它确实提供了更好的可读性和透明度。如果代码路径很热,JIT 可能会优化此类指令。
关于java - 每行中具有多个动态长度字符串的字符串格式(左右填充),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741286/