2014-09-19 9 views
5

Ho uno String piuttosto grande che ho bisogno di dividere in modo da poterlo inserire in un array. Così com'è, ci sarà un punto e virgola seguito da uno Integer, seguito da uno spazio e questo è dove ho bisogno di dividerlo.Dividere una stringa su un numero intero seguito da uno spazio

Dire per esempio, ho una String:

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

ho bisogno di dividerlo in modo che diventi:

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

presumo che posso usare qualcosa come:

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

Semplicemente non capisco bene RegEx.

Grazie a chiunque dare un'occhiata

Inoltre, il modello dove dovrebbe essere diviso sarà sempre un punto e virgola, seguita da una sola cifra e quindi lo spazio.

risposta

19

Basta dividere la stringa di input in base alla regex di seguito.

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

Codice:

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

uscita:

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

Spiegazione:

  • (?<=;\d) lookbehind positiva è qui utilizzato. Imposta il marker di corrispondenza subito dopo lo ;<number>. Cioè, asserisce ciò che precede il carattere dello spazio deve essere un punto e virgola e un numero.
  • (?<=;\d)\s Ora corrisponde al seguente carattere di spazio.
  • Dividere la stringa di input in base allo spazio corrispondente darà l'output desiderato.
Problemi correlati