2014-09-20 117 views
1

我試圖用分隔符(句號,分號和quesiton標記)將文本段落拆分爲句子。我能想到的在Java中使用split()方法和由此產生的數組保存到一個ArrayList:將句子拆分爲句子,並帶有分隔符:句號,分號和問號

String[] sentencesByPeriod = passage.split("\\."); 
String[] sentencesBySemicolon = passage.split("\\;"); 
String[] sentencesByQuestionM = passage.split("\\?"); 

List<String> allSentences = new ArrayList<String>(); 
allSentences.addAll(Arrays.asList(sentencesByPeriod)); 
allSentences.addAll(Arrays.asList(sentencesBySemicolon)); 
allSentences.addAll(Arrays.asList(sentencesByQuestionM)); 

這工作,但我想知道是否有任何更有效的方式來做到這一點?謝謝

+0

是什麼讓你認爲這是低效率的? – NPE 2014-09-20 16:26:25

+0

使用多個String數組並將它們推入ArrayList對我來說似乎非常多餘。 – TonyGW 2014-09-20 16:28:49

回答

3

在一個正則表達式中,你可以這樣做。

String s[] = passage.split("[.;?]"); 
List<String> allSentences = new ArrayList<String>(); 
allSenteces.addAll(Arrays.asList(s)); 

或者使用的StringTokenizer

StringTokenizer tokenizer = new StringTokenizer(passage, ".;?"); 
List<String> s = new ArrayList<String>(); 
while(tokenizer.hasMoreTokens()){ 
    s.add(tokenizer.nextToken()); 
} 
+0

這比我的簡潔:)謝謝 – TonyGW 2014-09-21 20:39:49