java - 每行中具有多个动态长度字符串的字符串格式(左右填充)

标签 java string formatting format

我正在编写一个程序,并陷入以下要求:

输出到固定格式文件

     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/

相关文章:

excel - 使用VBA将单元格值从一个单元格复制到另一个单元格

php - 如何在 php 排序之间插入水平规则

JAVA区分曲线和直线

java - 调整 JOptionDialog 的大小以适应其中的内容

java - NetBeans w/Gradle 支持测试系统环境

string - eval 命令作为与 Matlab 一起使用的字符串

php - 比较两个字符串并以百分比计算它们之间的差异(php)

java - 如何观察整个 Camel 路线

java - String pool创建在Heap的PermGen区或Object区

php - 如何在不使用表格的情况下将文本片段放入类似网格的布局中?