不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签

您所在的位置:网站首页 swim加上ing怎么写 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签

不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签

2023-08-10 16:58| 来源: 网络整理| 查看: 265

问题描述:最近在搭建一个开源平台网站,在做一个简单搜索的功能,需要将搜索到的结果中被匹配的字符串添加不一样的颜色,但是又不破坏被匹配的字符串。

             使用的方法是替换被匹配的字符串加上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