我正在尝试创建一个制表符分隔文本文件,以便输出显示为列,但由于某种原因,该选项卡显示在不同的位置。这是由数据值不同的事实引起的。
这是我如何构建行和列
output.append("|\t" + column1 + "\t\t\t:\t" + column2 +" \t\t\n");
输出结果为
| activeSessions : 0
| duplicates : 0
| expiredSessions : 0
| rejectedSessions : 0
| sessionMaxAliveTime : 0
| sessionCounter : 0
正如您所看到的,第一列中包含较长文本条目的值会导致第二列稍微移动一点,即使两列都由两个制表符分隔。如何确保第二列位置在同一行?
由于
答案 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中。