0

如何在字符串中使用制表符将数据对齐到列?

我有例如这个字符串:

test = "A10 B10 C10 D10 E10"
test = "A100 B100 C100 D100 E100"
test = "A1000 B10 C100 D1000 E10"

并尝试将它们作为数据表中的一列打印到浏览器

<rich:column styleClass="leftAlign">
  <h:outputText value="#{bean.test}"/>
</rich:column> 

但如果我\t用作分隔符,我会得到这个:

A10 B10 C10 D10 E10
A100 B100 C100 D100 E100
A1000 B10 C100 D1000 E10

但我需要这样看:

A10   B10   C10   D10   E10
A100  B100  C100  D100  E100
A1000 B10   C100  D1000 E10

注意:当然使用 java 我可以做类似的事情

A0010 B0010
A0100 ........

还是在短字后面加几个" ",不过好像有点恶心。。

可以用其他更优雅的方式来完成吗?

更新: 我无法使用&nbsp;,因为我正在使用由;...分隔的 CSV 文件。

4

1 回答 1

1

好吧,如果它是一个表格并且您使用的是 HTML,我建议输出一个表格。表格的列将由浏览器对齐:

<table>
<tbody>
<tr><td>A10</td><td>B10</td><td>C10</td><td>D10</td><td>E10</td></tr>
<tr><td>A100</td><td>B100</td><td>C100</td><td>D100</td><td>E100</td></tr>
<tr><td>A1000</td><td>B10</td><td>C100</td><td>D1000</td><td>E10</td></tr>
</tbody>
</table>

制表符不适合您的原因是,通常在 HTML 中,所有连续的空格(空格、制表符、垂直制表符、回车符、换行符等)都被视为一个空格。

如果您真的想以文本方式执行此操作,则需要使用等宽字体,然后您有两种选择:

使用不间断空格字符实体,&nbsp;

A10&nbsp;&nbsp;&nbsp;B10&nbsp;&nbsp;&nbsp;C10&nbsp;&nbsp;&nbsp;D10&nbsp;&nbsp;&nbsp;E10
<br>A100&nbsp;&nbsp;B100&nbsp;&nbsp;C100&nbsp;&nbsp;D100&nbsp;&nbsp;E100
<br>A1000&nbsp;B10&nbsp;&nbsp;&nbsp;C100&nbsp;&nbsp;D1000&nbsp;E10

或者使用使用 CSS 样式white-space: pre(或其亲属之一)的内容。该pre元素默认使用它,因此:

<pre>A10   B10   C10   D10   E10
A100  B100  C100  D100  E100
A1000 B10   C100  D1000 E10</pre>

这是所有三个选项的实时示例source),在字段之间使用分号,正如您所说的那样。

于 2013-04-26T08:42:54.060 回答