2013-12-22 17 views
5

我如何在一個數組分割字符串中的單詞的Java

That's the code

分裂以下單詞到

array 
0 That 
1 s 
2 the 
3 code 

我想是這樣的

String str = "That's the code"; 

     String[] strs = str.split("\\'"); 
     for (String sstr : strs) { 
      System.out.println(sstr); 
     } 

但輸出是

That 
s the code 
+1

爲什麼不在拆分時使用**空格**?並照顧'''等特殊字符。 – herohuyongtao

+0

另外,當我們說將一個字符串拆分爲單詞時,我們的意思是**這就是代碼**到**這是**,** **和**代碼**。 – herohuyongtao

+0

'這就是代碼'相當於'那是代碼'。我正在比較句子。 – user2095165

回答

16

要明確劃分上的空白和撇號:

public class Split { 
    public static void main(String[] args) { 
     String [] tokens = "That's the code".split("[\\s']"); 
     for(String s:tokens){ 
      System.out.println(s); 
     } 
    } 
} 

或任何非單詞字符分割:

public class Split { 
    public static void main(String[] args) { 
     String [] tokens = "That's the code".split("[\\W]"); 
     for(String s:tokens){ 
      System.out.println(s); 
     } 
    } 
} 
+2

[\\ W]和[\\ s'] – user2095165

+2

'\\ W'之間的區別表示非單詞字符,它是任何不是az,AZ,0-9的字符,包括_(下劃線)字符。 '\\ s'表示一個空格,所以製表符,空格,換行符等等。如果我要在parens'()'中添加一些東西到字符串'\\ W'將會在每個paren上分割,然而'\ \ \ s'版本不會。 –

+0

@KevinBowersox感謝您的解釋+1 – Keerthivasan

4

您可以根據非字符的字符分割:

String str = "That's the code"; 
String[] splitted = str.split("[\\W]"); 

您的輸入,輸出將是:

That 
s 
the 
code 
0

您可以通過一個正則表達式,這將是兩個字符中的一個分裂 - 報價或空間:

String[] strs = str.split("['\\s]"); 
0

split使用正則表達式和正則表達式中是'不是特殊字符,所以你不需要與\逃避它。爲了表示空格,您可以使用\s(在字符串需要寫成"\\s")。還建立一套可以使用的字符「OR」操作符|a|b|c|d,或者只是使用字符類[abcd]這意味着完全一樣(a|b|c|d)

爲了使事情變得簡單,你可以使用

String[] strs = str.split("'| "); 

String[] strs = str.split("'|\\s");//to include all whitespaces 

String[] strs = str.split("['\\s]");//equivalent of "'|\\s" 
1

如果你想拆就非字母字符

String str = "That's the code"; 
String[] strs = str.split("\\P{Alpha}+"); 
for (String sstr : strs) { 
     System.out.println(sstr); 
} 

\ p {}阿爾法匹配任何非字母字符,這被稱爲POSIX字符,你可以閱讀this link更瞭解它是非常有用的。 +表示我們應該分割任何連續的字符串。

和輸出將是

That 
s 
the 
code 
+1

Unicode版本的+1,但是這個代碼可能並不是非常明確的新正則表達式的人,所以你可能應該擴大你的答案一點。 – Pshemo

0

您應先更換'" "(空格),使用str.replaceAll("'", " ")然後可以拆分在空格分隔字符串,使用str.split(" ")。你可以備選使用正則表達式來拆分'OR'空間。

0

可以在正則表達式中使用OR

public static void main(String[] args) { 
    String str = "That's the code"; 
     String[] strs = str.split("'|\\s"); 
     for (String sstr : strs) { 
      System.out.println(sstr); 
     } 
    } 

的字符串將由單引號(')或空間進行分割。單引號不需要轉義。輸出將

run: 
That 
s 
the 
code 
BUILD SUCCESSFUL (total time: 0 seconds) 
1

我發現用語言來分割的最佳解決方案,如果你的字符串包含字母強調的是:

String[] listeMots = phrase.split("\\P{L}+"); 

舉例來說,如果你的字符串是

String phrase = "Salut mon homme, comment ça va aujourd'hui? Ce sera Noël puis Pâques bientôt."; 

然後,您將得到以下文字(爲清楚起見,分隔在引號和逗號之間):

"Salut", "mon", "homme", "comment", "ça", "va", "aujourd", "hui", "Ce", 
"sera", "Noël", "puis", "Pâques", "bientôt". 

希望這會有所幫助!