2015-07-07 3 views
2

Я хочу разбить строку, когда пробел запятой.Java: regex split() на основе 2 разделителей

Мой вход Строка:

go back, to work ! ,2012-10-01 07:01:45,, 1 

Ожидаемый результат:

"go back, to work !"  
"2012-10-01 07:01:45,,1" 

код Я попробовал:

String[] b1=a1.split("[\\s,]"); 

Но это разбивает строку только основываясь на непечатаемых. Я хочу разбить его, когда есть как пробелы, так и запятая, а не только одна. Что мне делать?

+3

Ваша строка также содержит '1' ,, в конце - и это, кажется, не показывают в ожидаемом выходе - но вы не упоминаете, что он должен получить«очистить» – alfasin

+0

@alfasin: да , выход должен иметь только 2 части. Я редактировал сообщение. –

+2

Ваши квадратные скобки '[\\ s,]' определяют класс _character_ и означают _any ** один из ** _ символов в классе - ** не ** последовательность символов 'space-comma'. –

ответ

5

Split на пространстве, сопровождающееся запятой:

String[] b1 = a1.split("\\s,"); 

[\\s,] класс персонажа и он будет разделен на пробел или запятую.

+0

OP не ясен по требованиям, но он * делает * заявляет, что запрошенный результат должен отделять '2012-10-01 07:01:45 ,, 1' в две строки:' 2012-10-01 07:01 : 45' и '1'. Я боюсь, что очень сложно найти регулярное выражение, которое делает именно то, что он хочет (что также означает, что регулярное выражение, вероятно, не является правильным инструментом для задания в этом случае). – alfasin

+0

Я не хочу разбить его на основе пробелов "или" запятая. Я хочу разбить его, когда есть пробел с запятой. –

+1

Да, это мой ответ, например, «разделение на пробелы, за которым следует запятая» – anubhava

1

Split на пространстве, сопровождающееся запятой, используя ("\\s,") не даст вам желаемый выход

"go back, to work !" 

"2012-10-01 07:01:45" 

1 

Выход будет

go back, to work ! 

2012-10-01 07:01:45,, 1 

Либо вы можете использовать запятую, за которой следует пробел или пробел, затем запятая с использованием "\\s,|,\\s", то вы получите ниже выход

go back 

to work ! 

2012-10-01 07:01:45, 

1 

Однако это все еще не так, как вы хотели. Вы можете уточнить свое требование.

+0

Я отредактировал мое сообщение. Я хочу, чтобы выход был только в двух частях. Однако («\\ s») не решает проблему. Он разбивается только на пробелы. –

2

Используйте это, чтобы разделить строку при пробеле, затем запятая.

String[] b1 = a1.split(" ,"); 
Смежные вопросы