2015-01-06 3 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

텍스트에 다른'-'이 있으면 어떨까요? 훨씬 더 많은 고유 한 구분 문자 (또는 문자 시퀀스)를 사용하십시오. –

관련 문제