0

段落内を検索するEditTextがsearchKeywordあります(段落はSQLiteデータベース内にあります)。

String Contentstr = paragraph.replaceAll(searchKeyword,"<font color=\"red\">" + searchKeyword + "</font>");
txtV.setText(Html.fromHtml(Contentstr));

上記のコードのハイライトは次のようになります。

"Hi hi" (searchKeyword=" Hi hi") を検索すると、データベース検索機能は大文字と小文字を区別せずに返します (つまり、" "hI hiまたは " HI HI" などHi hi) 。 . などを searchKeyword=" " に変換します。 そんな交換したくない。「 」を検索するときは、「 」と他の「」または「」を強調表示する必要があります。他の部分は「 」に置き換えません。hI HIhI hiHi hi

Hi hiHi hihI hiHI HIHi hi

4

1 に答える 1

0

正規表現で大文字と小文字を区別しないようにする場合(?i)は、先頭に追加します。また、一致したグループのインデックスである$indexwhereを使用して、一致した部分を置換で使用することもできます。index

したがって、これらの情報を使用して、次のようなことを試すことができます

String Contentstr = paragraph.replaceAll("(?i)"+searchKeyword, 
                       "<font color=\"red\">$0</font>");

また、いくつかの特殊文字searchKeywordが含まれている場合は、これらの文字の特別な意味を自動的にエスケープする正規表現を生成するためにラップしますPattern.quote()

String Contentstr = paragraph.replaceAll("(?i)"+Pattern.quote(searchKeyword), 
                       "<font color=\"red\">$0</font>");
于 2013-05-24T01:52:16.773 に答える