2013-12-22 17 views
5

Wie kann ich teilen das folgende Wort in einem ArraySplit Strings in Java durch Worte

That's the code

in

array 
0 That 
1 s 
2 the 
3 code 

ich so etwas wie dieses

String str = "That's the code"; 

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

versucht, aber Der Ausgang ist

That 
s the code 
+1

Warum nicht ** Leerzeichen ** beim Teilen verwenden? Und pass auf Sonderzeichen wie '' 'auf. – herohuyongtao

+0

Auch wenn wir eine Zeichenfolge in Wörter aufteilen, meinen wir ** Das ist der Code ** zu ** Das ist **, ** der ** und ** Code **. – herohuyongtao

+0

'Das ist der Code' ist äquivalent zu' Das ist der Code'. Ich vergleiche Satz. – user2095165

Antwort

16

So teilte auf weißen Platz speziell und das Apostroph:

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); 
     } 
    } 
} 

oder auf jedes Nichtwortzeichen aufteilen:

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

was ist der Unterschied zwischen [\\ W] und [\\ s] – user2095165

+2

'\\ W' steht für ein Nicht-Wort-Zeichen, das ein beliebiges Zeichen ist, das nicht az, AZ, 0-9 ist, einschließlich des _ (Unterstrich). "\\ s" stellt ein Leerzeichen dar, also Tabulatoren, Leerzeichen, Zeilenumbrüche usw. Wenn ich etwas in Parens hinzufügen würde '' '' '' '' würde '' 'auf jeden Paren aufgeteilt, jedoch das \ \ s' Version würde nicht. –

+0

@KevinBowersox Danke für die Erklärung +1 – Keerthivasan

4

Sie können nach nicht-Zeichen Zeichen aufgeteilt:

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

für Ihre Eingabe, wird ausgegeben:

That 
s 
the 
code 
0

Sie durch einen regulären Ausdruck aufteilen, die eine der zwei Zeichen lang sein würde - Zitat oder Raum:

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

split verwendet regex und in regex ' ist nicht Sonderzeichen, so dass Sie nicht brauchen Escape mit \. Um Whitespaces darzustellen, können Sie \s verwenden (was in String als "\\s" geschrieben werden muss). Um einen Zeichensatz zu erstellen, können Sie auch den Operator "OR" | wie a|b|c|d verwenden oder einfach die Zeichenklasse [abcd] verwenden, was genau dasselbe bedeutet wie (a|b|c|d).

Um macht die Dinge einfach Sie

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

oder

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

oder

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

verwenden können, wenn Sie auf nicht alphabetische Zeichen teilen möchten

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

\ P {Alpha} passt auf alle nicht-alphabetischen Zeichen und dies wird POSIX-Zeichen genannt. Sie können mehr darüber in this link lesen. Es ist sehr nützlich. + zeigt an, dass wir uns auf jede fortlaufende Zeichenfolge solcher Zeichen aufteilen sollten.

und der Ausgang wird

That 
s 
the 
code 
+1

+1 für Unicode-Version, aber dieser Code ist möglicherweise nicht sehr klar für jemanden neu zu Regex, so sollten Sie wahrscheinlich Ihre Antwort ein wenig erweitern. – Pshemo

0

Sie sollten zuerst die ' mit " " (Leerzeichen) ersetzen, str.replaceAll("'", " ") und anschließend können Sie die Zeichenfolge auf dem leeren Raum Separator aufgeteilt, mit str.split(" ") konnte .Sie alternativ Verwenden Sie einen regulären Ausdruck, um den OR-Bereich zu teilen.

0

können Sie verwenden OR in regulären Ausdruck

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); 
     } 
    } 

Die Zeichenfolge wird durch einfache Anführungszeichen (') oder Raum aufgeteilt werden. Das einfache Zitat muss nicht maskiert werden. Der Ausgang würde

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

Die beste Lösung, die ich gefunden habe sein durch Worte zu teilen, wenn die Zeichenfolge akzentuierten Buchstaben enthält, ist:

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

Zum Beispiel, wenn Ihr String ist

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

Dann erhalten Sie die folgenden Wörter (in Anführungszeichen und Komma zur besseren Übersicht getrennt):

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

Hoffe, das hilft!