2011-01-19 99 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 
}