2010-12-19 52 views
1
String[] t = a.slowa("a. R; er, we p."); 
    for (String w : t) 
    System.out.println(w); 
    } 
//... 
    public String[] slowa(String s) { 
    return s.split(" |\\.|,|\\;"); 
    } 

输出:Java的分裂 - 问题空间

a 

R 

er 


we 
p 

为什么空间是新的世界?

+2

*“为什么太空是新的世界?”*说什么?欢迎来到StackOverflow。您提出的问题越清楚明确,您就会收到越多越好的答案。 – 2010-12-19 22:18:57

回答

7

你告诉String#split功能分割上的空间逗号分号。所以这就是它做的:

"a. R; er, we p." 
    ^^ ^^ ^^^^^ 
    || || ||| | | 
    || || ||| | +--Split here 
    || || ||| +----And here 
    || || ||+-------And here 
    || || |+--------And here 
    || || +---------And here 
    || |+------------And here 
    || +-------------And here 
    |+---------------And here 
    +----------------And here 

...因为您已经使用了没有量词的替代。你想要的是说在其中任何分裂:

return s.split("[ .,;]+"); 

使用字符类([...])和quanitifier(+),这样一比一排被视为一个单一的比赛。你也可以用一个交替+量词来完成它(你必须把这个交替放在一个非捕获组中:"(?: |\\.|,|\\;)+"),但是使用一个字符类更清晰。