1

ListView と search_term があります。ListView で search_term のすべてのインスタンスを (赤で) 強調表示したいと思います。これは機能し、簡単です。

text = text.replaceAll(search_term, "<font color='red'>$1</font>");

私は今、大文字と小文字を区別しないマナーでそれを機能させようとしています。以下は正しいと思いましたが、機能していません。

text = text.replaceAll("(?i)" + search_term, "<font color='red'>$1</font>");

SO 基本的に、search_term のすべてのインスタンスを赤で色付けしたいので、一致するときは大文字と小文字を区別しますが、色付けするときは無視します。

ここに 3 つの例があります。search_term は「apple」で、太字は赤色を表します。

「りんごは赤い」→「りんごは赤い」

「りんごは赤い」→「りんごは赤い」

「りんごは赤い」→「りんごは赤い」

敬具、 カタール

4

2 に答える 2

1

()search_termは、group..を表すような丸括弧で囲む必要があります。

したがって、アップルの場合、search_termは次のようになります。

search_term="(apple)";

これはでキャプチャされます$1

また

$0使わなくても簡単に使えます()

ノート

$0->完全一致です

$1->最初の()グループ

$2->2番目()のグループ

于 2012-10-27T19:24:05.533 に答える
0

(?i)では動作しないと思いますString.replaceAllPatternMatcherを使用すると機能するはずです。

Pattern pattern = Pattern.compile( search_term, Pattern.CASE_INSENSITIVE );
Matcher matcher = pattern.matcher( text );
text = matcher.replaceAll( "\0" );

文字列が正しいと 100% 確信できるわけではありませんreplaceAllが、それが一般的な考え方です。

于 2012-10-27T19:25:42.847 に答える