项目中搜索功能需要将搜索结果的中的关键字进行标红,但是如果遇到搜索内容中的英文字母,大小写就不好处理了。
以下是解决方法:
/**
* 搜索关键字标红
* @param title
* @param keyword
* @return
*/
public static String matcherSearchTitle(String title,String keyword){
String content = title;
String wordReg = "(?i)"+keyword;//用(?i)来忽略大小写
StringBuffer sb = new StringBuffer();
Matcher matcher = Pattern.compile(wordReg).matcher(content);
while(matcher.find()){
//这样保证了原文的大小写没有发生变化
matcher.appendReplacement(sb, "<font color=\"#ff0014\">"+matcher.group()+"</font>");
}
matcher.appendTail(sb);
content = sb.toString();
Log.i("Utils", content);
//如果匹配和替换都忽略大小写,则可以用以下方法
//content = content.replaceAll(wordReg,"<font color=\"#ff0014\">"+keyword+"</font>");
Log.i("Utils", content);
return content;
}