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>");

所以基本上我想将 search_term 的所有实例都涂成红色,我想在匹配时忽略大小写,但在着色时不忽略。

这里有3个例子。search_term 是“apple”,粗体表示红色。

“苹果是红色的” -> “苹果是红色的”

“苹果是红色的”->“苹果是红色的”

“苹果是红色的”->“苹果是红色的”

亲切的问候, Cathal

4

2 回答 2

1

search_term 应该在圆括号中,就像()描述一个group..

所以对于苹果来说,你的 search_term 应该是

search_term="(apple)";

这将被捕获$1

或者

您可以简单地使用$0而不使用()

笔记

$0-> 是完全匹配

$1->第一()

$2->第二()

于 2012-10-27T19:24:05.533 回答
0

我认为不适(?i)用于String.replaceAll. 如果您使用PatternMatcher ,它应该可以工作。

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 回答