如何在Java中正确创建制表符分隔的文本文件

时间:2011-01-15 14:30:13

标签: java text formatting string-formatting

我正在尝试创建一个制表符分隔文本文件,以便输出显示为列,但由于某种原因,该选项卡显示在不同的位置。这是由数据值不同的事实引起的。

这是我如何构建行和列

output.append("|\t" + column1 + "\t\t\t:\t" + column2 +"  \t\t\n");

输出结果为

|   activeSessions      : 0         
|   duplicates      : 0         
|   expiredSessions         : 0         
|   rejectedSessions        : 0         
|   sessionMaxAliveTime         : 0         
|   sessionCounter      : 0         

正如您所看到的,第一列中包含较长文本条目的值会导致第二列稍微移动一点,即使两列都由两个制表符分隔。如何确保第二列位置在同一行?

由于

4 个答案:

答案 0 :(得分:5)

未定义制表符的宽度,具体取决于您用于显示文本的内容。如果要对齐列,请改用空格。例如,您可以使用printf格式%10s与空格对齐。

答案 1 :(得分:3)

您必须将字符串的长度设置为25个字符,并使用x个空格填充差异x = (25 - column1.length)。不要忘记在文本编辑器中使用单声道空格字体。

要填充字符串,您可以使用:StringUtils.rightPad(String, int)

import org.apache.commons.lang.StringUtils;
output.append("|\t" + StringUtils.rightPad(column1, 25) + "\t\t\t:\t" + StringUtils.rightPad(column2, 15) +"  \t\t\n");

答案 2 :(得分:3)

请参阅How can I pad a String in Java?了解一些填充代码,并将列内容填充到任意长度。

答案 3 :(得分:1)

这与文件是否“正确”无关,而与显示数据有关,这是一个单独的问题。请考虑使用printf(...)或String.format(..)或Formatter类的其他变体来格式化数据以进行显示。或者如果是GUI,则显示在JTable中。