2010-12-19 38 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(+),這樣一比一排被視爲一個單一的比賽。你也可以用一個交替+量詞來完成它(你必須把這個交替放在一個非捕獲組中:"(?: |\\.|,|\\;)+"),但是使用一個字符類更清晰。