2014-09-19 4 views
5

Ich habe eine ziemlich große String, die ich aufteilen muss, damit ich es in ein Array setzen kann. Wie es ist, wird es ein Semikolon geben, gefolgt von einem Integer, gefolgt von einem Leerzeichen und das ist, wo ich es teilen muss.Teilen Sie einen String auf einem Integer gefolgt von einem Leerzeichen

Sagen Sie zum Beispiel, ich habe eine String:

first aaa;0 second bbb;1 third ccc;2 

ich es aufteilen müssen, so dass es wird:

first aaa;0 
second bbb;1 
third ccc;2 

Ich nehme ich so etwas wie verwenden:

Pattern pattern = Pattern.compile(^([0-9]*\s"); 
myArray = pattern.split(string_to_split); 

Ich verstehe RegEx nur noch nicht gut.

Dank jemand einen Blick

auch nehmen, um das Muster, wo es immer geteilt werden sollte der Raum nur um eine Stelle ein Semikolon, gefolgt wird und dann.

Antwort

19

Teilen Sie Ihre Eingabezeichenfolge gemäß der folgenden Regex.

(?<=;\\d)\\s 

Code:

String s = "first aaa;0 second bbb;1 third ccc;2"; 
String[] tok = s.split("(?<=;\\d)\\s"); 
System.out.println(Arrays.toString(tok)); 

Ausgang:

[first aaa;0, second bbb;1, third ccc;2] 

Erläuterung:

  • (?<=;\d) Positive Lookbehind wird hier verwendet. Es setzt den passenden Marker direkt nach dem ;<number>. Das heißt, was vor dem Leerzeichen steht, muss ein Semikolon und eine Zahl sein.
  • (?<=;\d)\s Jetzt entspricht es dem folgenden Leerzeichen.
  • Wenn Sie die eingegebene Zeichenfolge entsprechend dem übereinstimmenden Platz teilen, erhalten Sie die gewünschte Ausgabe.
Verwandte Themen