2011-01-19 71 views
0

「SOMETHING,SOMETHING1, SOMETHING2,...」模式和匹配器的Java問題

我該字符串怎麼可以拆分到

SOMETHING SOMETHING1 SOMETHING2

這是我目前所擁有的:

Pattern p = Pattern.compile("\\,+"); 
Matcher m = p.matcher(nVI); 
while(m.find()){ 
System.out.println(m.group(1)); 

但是,它沒有產生預期的結果。

+2

爲什麼不能使用string.split()選項並在`,`字符上分割。 – 2011-01-19 12:31:45

回答

5

究竟是什麼將部件分開?只需一個逗號和一個空格?

試試這個:

String[] parts = nVI.split(", "); 

沒有必要在你的正則表達式寫\\,逃脫逗號。

2
String s = "SOMETHING, SOMETHING1, SOMETHING2"; 
String[] stringList = s.split(", "); 

for(String str : stringList){ 
    System.out.println(str); 
} 
0

這裏有一個更通用的解決方案(由非單詞字符分割):

String[] stringList = s.split("\\W+"); 

Pattern的javadoc:

\w A word character: [a-zA-Z_0-9] 
\W A non-word character: [^\w] 

或者,如果你使用Guava,你可以做相當於(實際上不完全相同,因爲它也匹配非ASCII字母):

for(String word: 
Splitter.on(CharMatcher.JAVA_LETTER_OR_DIGIT.negate()).split(str)){ 
    // do something 
}