不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签 |
您所在的位置:网站首页 › swim加上ing怎么写 › 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签 |
问题描述:最近在搭建一个开源平台网站,在做一个简单搜索的功能,需要将搜索到的结果中被匹配的字符串添加不一样的颜色,但是又不破坏被匹配的字符串。 使用的方法是替换被匹配的字符串加上font标签。但是搜索出来的英文结果却没有那么理想。 原因分析:数据库查询使用like的时候是不区分大小写的,而java替换字符串时是区分大小写的,因此搜索出来的结果好多都没有加上font标签。 解决方法:使用强大的正则表达式。java中操作正则表达式的包为java.util.regex 包,主要由三个类所组成:Pattern、Matcher 和 PatternSyntaxException。 1、首先需要找到要被匹配的字符串,并且不区分大小写 代码: 1 Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 2 Matcher matcher = pattern.matcher(str);
2、然后使用find方法,查找字符串的起始位置。 代码: 1 while (matcher.find()) { 2 3 String match = str.substring(matcher.start() + len, matcher.end() 4 5 + len); 6 str = str.replaceFirst(match, "" + match+ ""); 7 len = len + s.length(); 8 }
最后的代码: package test2; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { /** * 不区分大小写匹配字符串 * 并将被匹配字符串中的字符串加上一些东西 。 * 保持被匹配字符串中的字符串不变 * * @param args */ public static void main(String[] args) { String str = "Java JAva JAVA JavA"; String regex = "JAva"; //保存你要添加的html代码的长度 int len = 0; String s = ""; //不区分大小写匹配字符串 Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(str); //循环查找,可能匹配到的不止一个字符串 while (matcher.find()) { //截取字符串,临时保存匹配到的字符串 //起始位置和结束位置都要加一个len长度 String match = str.substring(matcher.start() + len, matcher.end() + len); //替换首次找到的字符串 str = str.replaceFirst(match, "" + match + ""); //len需要加上s长度 len = len + s.length(); } System.out.println(str); } }
程序运行结果: Java JAva JAVA JavA 有什么更好的处理办法请留言推荐,谢谢
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |