我有一個很大的字符串(帶有文本)。 我需要將它分成幾塊(根據最大聊天限制),獨立運行一些操作,最後合併結果。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