2010-12-19 8 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へようこそ。あなたの質問を明確かつ具体的にする努力が増えるほど、より多くの、より良い回答が得られます。 –

答えて

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(+)を使用していること。また、オルタネーション+量子(これは非捕捉グループに入れ替えてください:"(?: |\\.|,|\\;)+")で行うこともできますが、文字クラスを使用する方がよりクリーンです。