我有一个很大的字符串(带有文本)。 我需要将它分成几块(根据最大聊天限制),独立运行一些操作,最后合并结果。Java文本分割算法
一个非常简单的任务。 我只是在寻找一种能自然分割文本的算法。所以它不会将它拆分成固定大小的子串,也不会将这些单词减半。
例如(*为100字符,最大字符限制设置为100):
....拆分我ARO * UND这里...
第一片段应包含:。 ..split我
第二个片段应该是:在这里......
在Java中工作BTW。
我有一个很大的字符串(带有文本)。 我需要将它分成几块(根据最大聊天限制),独立运行一些操作,最后合并结果。Java文本分割算法
一个非常简单的任务。 我只是在寻找一种能自然分割文本的算法。所以它不会将它拆分成固定大小的子串,也不会将这些单词减半。
例如(*为100字符,最大字符限制设置为100):
....拆分我ARO * UND这里...
第一片段应包含:。 ..split我
第二个片段应该是:在这里......
在Java中工作BTW。
你可以使用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...]
上word wrapping维基百科的文章讨论了这一点。它还链接到Knuth的algorithm。
如果您在使用秋千聊天,那么你可以处理它是这样的:
//textarea is JTextArea instance
textarea.setLineWrap(true);
textarea.setWrapStyleWord(true);
Jakarta commons-lang WordUtils.wrap()接近:
工程很棒。 将它重新实现了一点,所以它不会引发错误,但会将索引设置为start + maxlength值,以便在没有分隔符时分割文本。非常感谢 – ZolaKt 2010-11-25 15:06:37