2014-09-19 3 views
5

У меня довольно большой String, что мне нужно разбить, чтобы я мог поместить его в массив. Как бы то ни было, будет точка с запятой, за которой следует Integer, а затем пробел, и здесь мне нужно разбить его.Разделить строку на целое число, за которым следует пробел

Скажем, например, у меня есть String:

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

мне нужно разделить его так, что он становится:

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

Я предполагаю, что я могу использовать что-то вроде:

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

Я просто не понимаю RegEx, что еще хорошо.

Благодаря любой Взглянув

Кроме того, шаблон, где она должна быть разделена всегда будет точка с запятой, а затем только одну цифру, а затем пробел.

ответ

19

Просто разделите строку ввода в соответствии с приведенным ниже регулярным выражением.

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

Код:

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

Выход:

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

Объяснение:

  • (?<=;\d) Positive используется с просмотром назад здесь. Он устанавливает соответствующий маркер сразу после ;<number>. То есть, он утверждает, что предшествует символу пробела, должен быть точка с запятой и число.
  • (?<=;\d)\s Теперь он соответствует следующему символу пробела.
  • Разделение входной строки в соответствии с этим согласованным пространством даст вам желаемый результат.