2011-12-03 1 views
-2

기본적으로 대화를 포함하는이 문자열이 있는데, 나는 Pattern 클래스로 1 인의 텍스트를 "필터링"하고 싶습니다.Pattern과 Matcher 클래스를 사용하여 Java로 대화를 분할하는 방법은 무엇입니까?

대화는 다음과 같습니다 : 나는 다른 문자열/다른 배열에있는 모든 다른 줄을 추가하려고

Jack: Hi 
John: Hello 
Jack: How are you? 
John: I'm cool, how 'bout you? 
Jack: I'm cool too. 

. 나는 모든 발견 된 패턴은 하나의 다른에 넣고 싶은, 그러나, 나는이 원하지 않는

String someteststring = "Jack: HiJack: How are you?Jack: I'm cool too." 

:에

private String getFrom(String in, String type) { 
    String patr = "", Return = ""; 
    if (type == "title") { 
     patr = "Jack:"; 
    } 

    Pattern patr = Pattern.compile(patr); 
    Matcher matcher = pattern.matcher(in); 

    while (matcher.find()) { 
     Return = main.substring(matcher.start(), matcher.end()); 
    } 

    if (type == "title") { 
     Return = Return.substring(0, Return.length()); 
    } 
    return Return; 
} 

코드 결과 :

그래서 나는이 방법을 썼다 문자열은 다음과 같습니다.

someteststring[0] = "Jack: Hi" 
someteststring[1] = "Jack: How are you?" 
someteststring[2] = "Jack: I'm cool too." 

이 설명이 도움이 되었으면 좋겠습니까?

+5

Java에서 객체의 내용을 비교하기 위해'=='를 사용하지 마십시오. 'String.equals()'를 사용해야합니다. 또한 변수 이름은 대문자로 시작하면 안됩니다. 또한 다른 것들에 대해 같은 변수 이름을 다시 사용하려고 시도하는 것 같습니다.이 코드는 컴파일되지 않습니다. –

+0

당신은 아마도'if ("title".equals (type))'을 의미 할 것이고'=='는 의미하지 않을 것입니다. –

+0

@Guillaume - 물론 모든 문자열 리터럴 *인데 인턴이 될 경우. 'String' 객체 중 하나가'StringBuilder'에서 나온다면 어떻게 될까요? 명시 적으로 참조 값이나 primatives를 비교하려고하지 않는 한 결코'=='를 사용해서는 안됩니다. –

답변

1
String[] finalText = somteststring.split("\n"); 
관련 문제