如何在任何情况下突出显示单词(大写,小写部分或完全)?

时间:2013-05-24 01:40:35

标签: java android regex

我有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”等等on),它hightligts“Hi hi”,但将所有其他“hI HI”,“hI hi”,...等替换为searchKeyword =“Hi hi”。
我不想这样替换。
当我搜索“Hi hi”时,它必须高亮显示“Hi hi”和其他人“hI hi”或“{{1} “不将其他人改为”HI HI“。

1 个答案:

答案 0 :(得分:0)

如果您想让正则表达式不区分大小写,请在开始时添加(?i)。您也可以使用$index替换匹配的部分,其中index是匹配的group的索引。

因此,使用这些信息,您可以尝试类似

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

如果你的searchKeyword包含一些special characters,请用Pattern.quote()包装它以生成将自动转义这些字符的特殊含义的正则表达式

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