581 Stimmen

Aufteilung einer Zeichenkette mit beliebigen Leerzeichen als Begrenzungszeichen

Welches Regex-Muster muss ich an java.lang.String.split() um eine Zeichenkette in ein Array von Teilzeichenketten unter Verwendung aller Leerzeichen aufzuteilen ( ' ' , '\t' , '\n' , usw.) als Trennzeichen?

10voto

Arrow Punkte 165
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

9voto

Felix Scheffer Punkte 326

Apache Commons Lang verfügt über eine Methode zum Aufteilen einer Zeichenkette mit Leerzeichen als Trennzeichen:

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 verwenden sein als ein Regex-Muster.

3voto

SKL Punkte 113

Alles was Sie brauchen ist um mit einem der Sonderzeichen der Java Ragex Engine zu teilen,

und das ist WhiteSpace-Zeichen

  • \d Stellt eine Ziffer dar: [0-9]
  • \D Stellt eine Nicht-Ziffer dar: [^0-9]
  • \s Repräsentiert eine Whitespace-Zeichen einschließlich [ \t\n\x0B\f\r]
  • \S Stellt ein Nicht-Leerzeichen als [^\s]
  • \v Stellt ein vertikales Leerzeichen dar als [\n\x0B\f\r\x85\u2028\u2029]
  • \V Stellt ein nicht-vertikales Leerzeichen dar als [^\v]
  • \w Stellt ein Wortzeichen dar als [a-zA-Z_0-9]
  • \W Stellt ein Nicht-Wort-Zeichen dar als [^\w]

Der wichtigste Punkt dabei ist zu beachten ist, dass das kleine Schriftzeichen \s steht für alle Arten von Leerzeichen einschließlich eines einzelnen Leerzeichens [ ] , Tabulatorzeichen [ ] oder etwas Ähnliches.

Wenn Sie also versuchen, etwas wie das hier zu tun

String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");

Sie erhalten dann die gewünschte Ausgabe.


Einige sehr nützliche Links:


Ich hoffe, das hilft Ihnen am besten!!!

2voto

Wiktor Stribiżew Punkte 551798

Um eine Zeichenkette mit beliebige Unicode-Whitespaces müssen Sie Folgendes verwenden

s.split("(?U)\\s+")
         ^^^^

El (?U) inline eingebettete Flag-Option ist das Äquivalent zu Pattern.UNICODE_CHARACTER_CLASS das ermöglicht \s um alle Zeichen aus der Unicode-Kategorie "Leerzeichen" abzubilden.

Wenn Sie mit Whitespace und die Leerzeichen in dem resultierenden Array beibehalten verwenden

s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")

Siehe die Regex-Demo . Siehe Java-Demo :

String s = "Hello\t World\u00A0»";
System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »]
System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")));
// => [Hello,    , World,  , »]

1voto

Rishabh Punkte 21

Da es sich um einen regulären Ausdruck handelt und ich davon ausgehe, dass Sie auch nicht-alphanumerische Zeichen wie Kommas, Punkte usw., die von Leerzeichen umgeben sein könnten, nicht wollen (z. B. "eins, zwei" sollte [eins][zwei] ergeben), sollte es sein:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X