2014-09-19 8 views
5

Mam dość duży String, który muszę podzielić, więc mogę umieścić go w tablicy. Tak jak to jest, pojawi się średnik, po którym następuje Integer, po którym następuje spacja i tutaj muszę ją podzielić.Podziel ciąg na liczbę całkowitą, a następnie spację

powiedzieć na przykład, mam String:

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

muszę podzielić ją tak, że staje się:

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

Zakładam mogę używać coś takiego:

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

Po prostu nie rozumiem jeszcze tego dobrze.

Dzięki ktoś przyjrzeniu

Również wzór gdzie powinien być podzielony będzie zawsze średnik, a następnie tylko jedną cyfrę, a następnie przestrzeń.

Odpowiedz

19

Po prostu podziel łańcuch wejściowy zgodnie z poniższym wyrażeniem regularnym.

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

Kod:

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

wyjściowa:

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

Objaśnienie:

  • (?<=;\d) Pozytywna lookbehind jest tutaj stosowane. Ustawia pasujący znacznik tuż po ;<number>. Oznacza to, że to, co poprzedza znak przestrzeni, musi być średnikiem i liczbą.
  • (?<=;\d)\s Teraz dopasowuje następujący znak spacji.
  • Podział łańcucha wejściowego zgodnie z dopasowaną spacją daje pożądane wyniki.