2011-12-03 5 views
-2

私は基本的に会話を含んでいるこの文字列を持っています。そして、私はパターンクラスで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'オブジェクトの1つが' StringBuilder'から来たらどうなりますか?あなたは、明示的に参照値やプリミティブを比較しようとしているのでなければ、 '=='を使用するべきではありません。 –

答えて

1
String[] finalText = somteststring.split("\n");