Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 基于不区分大小写的搜索进行替换时是否保留文本大小写?_Android_Replace_Textview - Fatal编程技术网

Android 基于不区分大小写的搜索进行替换时是否保留文本大小写?

Android 基于不区分大小写的搜索进行替换时是否保留文本大小写?,android,replace,textview,Android,Replace,Textview,在我的应用程序中,我有一个包含一些文本的文本视图。我试图从用户那里获取输入,然后根据该输入在Textview中突出显示单词 例如,如果文本是 你好,stackoverflow 用户的输入是 你好 我想将文本替换为: <font color='red'>Hello</font>` stackoverflow Hello`stackoverflow 这是我的代码: String input = //GETTING INPUT FROM THE USER text= te

在我的应用程序中,我有一个包含一些文本的文本视图。我试图从用户那里获取输入,然后根据该输入在Textview中突出显示单词

例如,如果文本是

你好,stackoverflow

用户的输入是

你好

我想将文本替换为:

<font color='red'>Hello</font>` stackoverflow 
Hello`stackoverflow
这是我的代码:

String input = //GETTING INPUT FROM THE USER
text= text.replaceAll(input,"<font color='red'>"+input+"</font>");
Textview.setText(Html.fromHtml(text));
String input=//从用户获取输入
text=text.replaceAll(输入“+”输入+”);
Textview.setText(Html.fromHtml(text));
替换工作正在进行,但问题是我当前的代码更改了原始的单词大小写,例如:

文本:HeLLo stackoverflow

输入:您好

我得到了什么:
hello
stackoverflow


我想要什么:
你好
堆栈溢出

你必须考虑正则表达式

replaceAll
允许您使用正则表达式,因此,您可以替换找到的确切匹配项的文本。 例如,如果找到Hello,它将替换为
Hello
。 如果找到HeLLo,它会将其替换为
HeLLo

您的代码应该简单到:

String highlighted = text.replaceAll("(?i)("+input+")","<font color='red'>$1</font>");
。 将此字符串中与给定正则表达式匹配的每个子字符串替换为给定替换。 调用str.replaceAll(regex,repl)形式的此方法会产生与表达式完全相同的结果

Pattern.compile(regex).matcher(str).replaceAll(repl)
请注意,替换字符串中的反斜杠()和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果;见Matcher.replaceAll。如果需要,可以使用Matcher.quoteReplacement(java.lang.String)来抑制这些字符的特殊含义

Parameters:
regex - the regular expression to which this string is to be matched
replacement - the string to be substituted for each match
Returns:
The resulting String
更新

您可以在此页面中测试正则表达式:


詹姆斯,我还是不明白你的意思,你说的亮点和你的各种例子是什么意思?caps?很抱歉不清楚,我正在大文本中进行一种搜索,用户输入一个单词-->应用程序正在文本-->中查找它,最后,显示相同的文本,但现在已突出显示搜索的单词。类似的事情:也许考虑使用<代码>模式。编译(正则表达式,模式,CaseSy-List敏感)…< /代码>嗨,谢谢你的回复,我有点困惑,你能给我举一个组合这两个例子吗?我想<代码>保持器=保持器。setText(Html.fromHtml(holder))就足够了。我现在不能试一试。模式类似于
holder=Pattern.compile(“+input+””),Pattern.Pattern.matcher(holder.replaceAll($1))
此外,此代码会突出显示所有出现的情况,而不仅仅是第一个!用一个单词多于的文本来尝试一下once@CarlosRobles卡洛斯,你真是个魔术师!,这是一个集体骗局
Parameters:
regex - the regular expression to which this string is to be matched
replacement - the string to be substituted for each match
Returns:
The resulting String