2015-01-06 4 views
1

У меня проблема с разбором текста, у меня есть стенограмма интервью, и у меня есть тег, который говорит канал (ch1, ch2). И мне нужно разбить его на массив, и я мог бы искать, в каком канале кто-то говорит конкретное слово.Как разбить строку на массив

Например, это часть интервью

<ch1>Hello</ch1> <ch2>Hello</ch2> <ch1>How are you</ch1><ch2>I'm fine</ch2> 

Это строка

String text = "<ch1>Hello</ch1> <ch2>Hello</ch2> <ch2>How are you</ch2> 
<ch2>I'm fine</ch2>"; 

И я хочу выходные

String output[] = {<ch1>Hello</ch1>,<ch2>Hello</ch2>,....} 

Спасибо за помощь.

+1

http://jsoup.org/cookbook/input/parse-body-fragment – Maroun

ответ

3

Вы можете использовать регулярное выражение с lookahead and lookbehind:

String dialogue = "<ch1>Hello</ch1> <ch2>Hello</ch2> <ch1>How are you</ch1><ch2>I'm fine</ch2>"; 
String[] statements = dialogue.split("(?<=</ch[12]>)\\s*(?=<ch[12]>)"); 
System.out.println(Arrays.asList(statements)); 

Выход:

[<ch1>Hello</ch1>, <ch2>Hello</ch2>, <ch1>How are you</ch1>, <ch2>I'm fine</ch2>] 

Это немного трудно читать из-за многих < и >, но картина выглядит так:

split("(?<=endOfLastPart)inBetween(?=startOfNextPart)") 
+0

Хорошо, спасибо, вот что я хочу. – tomas

0
text.split("<ch").join("-<ch").split("-"). 

Может быть любая строка вместо "-", которая может использоваться.

+0

Что делать, если в тексте есть другие '-'? Лучше использовать _much_ более уникальный символ разделителя (или последовательность символов). –

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