zoukankan      html  css  js  c++  java
  • 正则表达式-将搜索结果高亮

    模拟:

    将要查找的字符串中,指定字符替换为高亮的字符:

    方法一:

    package com.java.regex;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class HighLight {
        public static void main(String[] args) {
            String keyword = "a";
            String regexp = keyword + "+";
            String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";
            
            Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(name);
            StringBuffer sb = new StringBuffer();
            
            int start = 0;
            int end = 0;
            String temp = "";        
            while(matcher.find()){
                start = matcher.start();
                sb.append(name.substring(end, start));
                temp = "<i class="highlight">"+matcher.group()+"</i>";
                sb.append(temp);
                end = matcher.end();
            }
            
            sb.append(name.substring(end));
            
            System.out.println(sb.toString());
            
        }
    }

     返回结果:

    <i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">Aaa</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">A</i>玉玉<i class="highlight">aaa</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">A</i>阿达ff

     

     方法二:

    package com.java.regex;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class HighLight2 {
        public static void main(String[] args) {
            String keyword = "a";
            String regexp = keyword;
            String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";
            
            Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(name);
            String resp = matcher.replaceAll("<i class="highlight">"+keyword+"</i>");
            System.out.println(resp);
        }
    }

    结果:

    <i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">a</i><i class="highlight">a</i><i class="highlight">a</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">a</i>玉玉<i class="highlight">a</i><i class="highlight">a</i><i class="highlight">a</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">a</i>阿达ff

    但是问题是,将name中的大写的A也替换为小写了。

    方法三:

    package com.java.regex;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class HighLight3 {
        public static void main(String[] args) {
            String keyword = "a";
            String regexp = keyword + "+";
            String name = "啊abfac是的Aaa爱的的a我要是alkja卡和户A玉玉aaa很快就asa啊发A阿达ff";
            
            Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(name);
            StringBuffer sb = new StringBuffer();
            while(matcher.find()){
                matcher.appendReplacement(sb, "<i class="highlight">"+matcher.group()+"</i>");
            }
            matcher.appendTail(sb);
            
            System.out.println(sb.toString());
        }
    }

    结果:

    <i class="highlight">a</i>bf<i class="highlight">a</i>c是的<i class="highlight">Aaa</i>爱的的<i class="highlight">a</i>我要是<i class="highlight">a</i>lkj<i class="highlight">a</i>卡和户<i class="highlight">A</i>玉玉<i class="highlight">aaa</i>很快就<i class="highlight">a</i>s<i class="highlight">a</i>啊发<i class="highlight">A</i>阿达ff

    很nice。又简单又快捷

    --------

  • 相关阅读:
    vue比较模板来跟新数据
    iframe自适应高度
    springmvc接口ios网络请求
    spring mvc实现接口参数统一更改
    spring mvc实现自定义注解
    基于redis集群实现的分布式锁,可用于秒杀,定时器。
    java使用javax.mail进行免费的邮件发送
    前端图片压缩上传(纯js的质量压缩,非长宽压缩)
    java项目中的路径获取,request
    阿里云(腾讯云类似)服务器控制台配置开放所有的端口
  • 原文地址:https://www.cnblogs.com/tenWood/p/7487420.html
Copyright © 2011-2022 走看看