【问题标题】:Format fixed-format text file lines格式化固定格式的文本文件行
【发布时间】:2010-04-26 10:20:33
【问题描述】:

有一个文本文件

第一第二第三 1 2 3 是 不 好的 hmmmmmmm 是的

什么 java 函数 /libs 用于对齐单词,使它们看起来像这样(基于最长列的长度的固定宽度),比如说中心对齐:

第一第二第三 1 2 3 是 不 好的 hmmmmmmm 是的

你知道,我需要 Microsoft Word (Ctrl + J) 的“JUSTIFY-FULL”功能。

【问题讨论】:

    标签: java string text


    【解决方案1】:

    参见 Apache Commons Lang 中 org.apache.commons.lang.StringUtilscenter(String, int) 方法。

    链接:http://commons.apache.org/lang/

    【讨论】:

    • 我知道 Apache StringUtils 有一些东西 ;)
    • 是的,他们似乎没有我需要的功能:(这只是使文本居中,它会在左右添加填充。我需要的是创建一个长字符串并证明每个单词之间的空格相等。
    【解决方案2】:

    我不知道有什么库可以为你做这件事,但这是一项非常简单的编程任务......

    对数据进行一次遍历,测量每列字符串的最大长度

    第二次通过在每个数据的两侧使用填充来写入数据,以使宽度与最大值相同。

    自己编写一个函数,将字符串两端填充到固定长度。

    编辑: 刚刚看到关于 Apache commons string centering 实用程序的另一个答案 - 只要您不介意将该依赖项添加到您的 rproject 中,您就不必编写一个。

    【讨论】:

    • @Simon 不确定这就是我要找的。我在 Word 中需要 justify-full,ctrl+j。此功能似乎像 justify-center 一样工作。也许他们在 StringUtils 中有另一个函数?
    • 在这种情况下,自己编写一个很好的论据。这真的不是那么难的问题,请尝试一下。
    • 等一下...完全对齐是一种段落格式设置活动,需要连字符。我认为您的文件在第三和 1、3 和 yes 和 ok 和 hmmmmm 之间有一个行尾。你是说这些需要在给定线宽的情况下形成一个连续的段落吗?这就是我认为充分证明的含义。
    • @Simon 不,就我而言,它实际上不需要连字符。我可能不准确。但是你已经有了这个想法。我们需要找到最长的(以字符为单位)行。那将是lineMaxLength。然后,文件的每一个较短的长度都应该被填充,但应该是相等的。
    • 4 个单词,表示最多 5 个空格填充。最长字符串的最左边和最右边的填充将是 0 长度。在较短的字符串中,所有 5 个填充(相邻单词之间的空格差异)都将是非空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多