2010-11-25 124 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返回一个列表,但你可以选择一个“行分隔符”,这是不太可能发生在文本&然后拆分