2010-11-25 158 views
1

我有一個很大的字符串(帶有文本)。 我需要將它分成幾塊(根據最大聊天限制),獨立運行一些操作,最後合併結果。Java文本分割算法

一個非常簡單的任務。 我只是在尋找一種能自然分割文本的算法。所以它不會將它拆分成固定大小的子串,也不會將這些單詞減半。

例如(*爲100字符,最大字符限制設置爲100):

....拆分我ARO * UND這裏...

第一片段應包含:。 ..split我

第二個片段應該是:在這裏......

在Java中工作BTW。

回答

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...] 
+0

工程很棒。 將它重新實現了一點,所以它不會引發錯誤,但會將索引設置爲start + maxlength值,以便在沒有分隔符時分割文本。非常感謝 – ZolaKt 2010-11-25 15:06:37

0

如果您在使用鞦韆聊天,那麼你可以處理它是這樣的:

//textarea is JTextArea instance 
textarea.setLineWrap(true); 
textarea.setWrapStyleWord(true); 
1

Jakarta commons-lang WordUtils.wrap()接近:

  • 它只是打破在空間
  • 一點也沒有」 t返回一個列表,但你可以選擇一個「行分隔符」,這是不太可能發生在文本&然後拆分