我有一个大字符串(带文字)。 我需要将它拆分成几块(根据最大聊天限制),独立运行一些操作,最后合并结果。
一个非常简单的任务。 我只是在寻找能够自然地分割文本的算法。所以它并没有将它分割成固定大小的子串,也没有把它们切成两半。
例如(*是第100个字符,max char限制设置为100):
....分开我aro * und here ...
第一个片段应该包含:...分裂我
第二个片段应该是:在这附近......
使用Java btw。
答案 0 :(得分:7)
关于word wrapping的维基百科文章对此进行了讨论。它还链接到Knuth的algorithm。
答案 1 :(得分:1)
您可以使用lastIndexOf(String find,int index)。
public static List<String> splitByText(String text, String sep, int maxLength) {
List<String> ret = new ArrayList<String>();
int start = 0;
while (start + maxLength < text.length()) {
int index = text.lastIndexOf(sep, start + maxLength);
if (index < start)
throw new IllegalArgumentException("Unable to break into strings of " +
"no more than " + maxLength);
ret.add(text.substring(start, index));
start = index + sep.length();
}
ret.add(text.substring(start));
return ret;
}
和
System.out.println(splitByText("....split me around here...", " ", 14));
打印
[....split me, around here...]
答案 2 :(得分:1)
Jakarta commons-lang WordUtils.wrap()已关闭:
答案 3 :(得分:0)
如果您正在使用Swing进行聊天,那么您可以像这样处理:
//textarea is JTextArea instance
textarea.setLineWrap(true);
textarea.setWrapStyleWord(true);