2015-01-09 4 views
3

У меня есть строка, как "asdfsd[12345]skfjoib[346676]qwoiejflksjv[12345]" , и я хочу, чтобы разбить его на массив каклучший способ разделить строку в Java

Array[0] = asdfsd 
Array[1] = [12345] 
Array[2] = skfjoib 
Array[3] = [346676] 
Array[4] = qwoiejflksjv 
Array[5] = [12345] 

Каков наилучший подход (меньше кода, больше скорости), чтобы сделать это?

+6

Вы пробовали что-нибудь? –

+2

[Это] (http://stackoverflow.com/help/how-to-ask) может помочь вам. –

+0

@ LutzHorn да, но это кажется немного неуклюжим для меня. Я сопоставляю строки в [] с регулярным выражением, получаю его индекс, а затем разделяю исходную строку, а затем вставляю ее в массив. – gone

ответ

10

Вот один из способов:

input.split("(?=\\[)|(?<=\\])")) 

Регулярное выражение говорит "Split на что-либо, предшествующего в [ или после ]".

Демо:

String input = "asdfsd[12345]skfjoib[346676]qwoiejflksjv[12345]"; 
for (String s : input.split("(?<=\\])|(?=\\[)")) 
    System.out.println(s); 

Выход:

asdfsd 
[12345] 
skfjoib 
[346676] 
qwoiejflksjv 
[12345] 
+0

Это действительно СОВЕРШЕННОЕ решение для меня! благодаря – gone

6

Очень малоэффективный:

String[] ss = s.replaceAll("[", ";[").replaceAll("]", "];").split(";"); 
+3

Очевидно, что не будет работать, если строка содержит ';' для начала. – aioobe

Смежные вопросы