0

簡単なRssフィードリーダーを作成しました。この問題が発生しました。アイテムの説明にテキストがありますが、このテキストにはこの文字が含まれています<br/>

「私の犬<br/>は黒くて、<br/>テーブルにとどまっています」

今、私はこのキャラクターから文字列をクリアするつもりはありません、私はこの方法を使います

private static String IsMatch(String s, String pattern) {
    try {
        Pattern patt = Pattern.compile(pattern);
        Matcher matcher = patt.matcher(s);
        return matcher.group();
    } catch (RuntimeException e) {
      return "Error";
    } }

String regex ="[<br/>]";

theString2=IsMatch(theString,regex);
 AppLog.logString(theString2);

ただし、このメソッドは常にErrorを返します。誰かが何が問題なのか教えてもらえますか?

よろしくアントニオ

4

2 に答える 2

1

問題は、マッチャーでfind()を呼び出さないことです。group()を呼び出す前にfind()を呼び出す必要があります(そしてfind()がtrueを返すことをテストします)。

あなたの方法IsMatchが何をするのかわかりません。そのままでは、一致を返すか(つまり、前に"<br/>"呼び出したと仮定してfind())、またはを返し"Error"ます。

また、<br/>正規表現に角かっこを入れないでください。角かっこは必要ありません。

私はあなたの目的のために正規表現の代わりにreplaceを使用することを本当に考えています:

String s = "my dog <br/> is black and he <br/> stay on table ".replace("<br/>","");

推奨事項として、ログに記録せずに例外をキャッチしないでください。それらは隠されるべきではない貴重な情報を提供します。問題が発生した場合、デバッグが非常に困難になります。

于 2012-05-04T09:08:06.910 に答える
0
String regex ="(\<br\/\>)";

正規表現の文法の詳細に注意する必要があると思います。1。特殊文字のように「<」をエスケープします。

正規表現の言語が異なれば仕様も異なります

于 2012-05-04T09:11:49.500 に答える