java.util.Formatter救援:
格式化程序可以左对齐要打印的文本,您可以为其分配宽度,因此它将用空格填充文本,使其占据所有所需的宽度,然后您只需用点替换空格。这是一个例子:
import java.util.*;
public class Test
{
public static final synchronized strictfp void main(String[] args)
{
Map<String, Double> myData = new LinkedHashMap<String, Double>();
myData.put("Total", 24.0);
myData.put("App", 24.0);
myData.put("USB storage app", 0.0);
myData.put("Data", 0.0);
myData.put("SD card", 0.0);
for(Map.Entry myEntry : myData.entrySet())
{
Formatter myFormatter = new Formatter();
myFormatter.format("%1$-20s%2$15.2fKB", myEntry.getKey(), myEntry.getValue());
System.out.println(myFormatter.toString().replace(' ', '.'));
}
}
}
这里有趣的部分是格式字符串:
%1$-20s
将最大宽度为 20 个字符 (20) 的第一个参数 (1$) 左对齐 (-) 打印为字符串 (s)。
%2$15.2fKB\n
将最大宽度为 15 个字符 (15) 和 2 个小数点 (.2) 的第二个参数 (2$) 打印为浮点数 (f)。
这意味着第一个值将始终固定为 20 个字符,第二个值将始终固定为 15 个字符。那么所有的行总是 35 个字符长 + KB 后缀 + 浮点数的小数点。
上面的代码产生输出:
Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KB
TODO:不要覆盖第一列名称中的合法空格;)