Wie kann ich einen String mit beliebigen Leerzeichen Zeichen als Trennzeichen aufgeteilt?

StackOverflow https://stackoverflow.com/questions/225337

  •  03-07-2019
  •  | 
  •  

Frage

Welche RegexMuster müsste ich in die java.lang.String.split() Methode zu übergeben einen String in ein Array von Teilstrings aufteilen alle Leerzeichen verwenden (‘‘, ‚\ t‘, ‚\ n‘, etc.) als Trennzeichen?

War es hilfreich?

Lösung

Etwas in den Zeilen

myString.split("\\s+");

Diese Gruppen alle weißen Flächen als Trennzeichen.

Also, wenn ich die Zeichenfolge:

"Hello[space][tab]World"

Dies sollte die Saiten "Hello" und "World" ergeben und den leeren Raum zwischen dem [space] und der [tab] wegzulassen.

Wie VonC darauf hingewiesen, sollte der Backslash geschützt werden, da Java würde zuerst versuchen, die Zeichenfolge zu einem Sonderzeichen zu entkommen, und sendet , die zu analysiert werden. Was Sie wollen, ist die wörtliche "\s", was bedeutet, Sie müssen "\\s" passieren. Es kann ein wenig verwirrend.

Die \\s entspricht [ \\t\\n\\x0B\\f\\r]

Andere Tipps

In den meisten Regex Dialekte gibt es eine Reihe von praktischen Charakter Zusammenfassungen Sie für diese Art der Sache nutzen können - das sind gute erinnern:

\w - Für jedes Wortzeichen.

\W - Für jedes Nicht-Wort-Zeichen.

\s - Für jedes Leerraumzeichen.

\S - Spiele alles andere als white-space Zeichen.

\d - Für jeden Ziffer.

\D - Spiele nichts außer Ziffern

.

Eine Suche nach „Regex Cheatsheets“ sollten Sie mit einer ganzen Menge von nützlichen Zusammenfassungen belohnen.

diese Funktion erhalten in Javascript , hatte ich folgendes zu tun:

myString.split(/\s+/g)

"\\ s +" sollte es tun

Auch Sie können einen UniCode non-breaking Raum haben xA0 ...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

Apache Commons Lang hat eine Methode eine Zeichenfolge mit Leerzeichen als Trennzeichen aufgeteilt:

StringUtils.split("abc def")

http: //commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

Dies könnte einfacher zu bedienen als ein RegexMuster.

Da es ein regulärer Ausdruck ist, und ich gehe davon aus u würde auch nicht nicht-alphanumerische Zeichen wie Kommas will, Punkte, etc., die durch Leerzeichen (zB umgeben sein könnte „eins, zwei“ geben sollten [einen] [zwei ]), sollte es sein:

myString.split(/[\s\W]+/)

Ich bin überrascht, dass niemand String.split () ohne Parameter erwähnt hat. Ist das nicht das, was sie gemacht haben? wie in:

"abc def ghi".split()

Sie eine Zeichenfolge durch Zeilenumbruch geteilt durch die folgende Anweisung:

 String textStr[] = yourString.split("\\r?\\n");

Sie mithilfe der folgenden Anweisung eine Zeichenfolge Leerzeichen aufteilen:

String textStr[] = yourString.split("\\s+");
String str = "Hello   World";
String res[] = str.split("\\s+");

Studium dieser Code .. viel Glück

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top