java高亮显示关键字不区分大小写(但不改变原文字母的大小写)---关键字分词功能(自写算法:关键字之间有子集的情况和关键字首尾拼接)

用户输入了重复的关键字发现程序处理有问题,存在问题

1:改变了原文字母大小写(最初解决方案是正则 repalceall)

2:关键字重复(包括 重复及含有)

3:对关键字的有效性处理(如全角","问题,空数据问题)

改进

1:不改变原文的字母大小写 2:关键字重复(包括 重复及含有) 3:对关键字的有效性处理(如全角","问题,空数据问题)

程序实际运行效果:

2020-03-17修正关键字之间有子集的情况和关键字首尾拼接情况:

修正算法:

应用截图:

以下为单词方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package reyo.sdk.utils.test.algorithms;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**   
* <B>创  建 人:</B>AdministratorReyoAut <BR>
* <B>创建时间:</B>2020年3月28日 上午11:45:01<BR>
*
* @author ReYo
* @version 1.0
*/
public class reyo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        String source = "aa reyo Reyo bb rEYO";
        String patternstring = "reyo";
        System.out.println(IgnoreCaseReplace(source, patternstring));
 
    }
 
    /**
    * java实现不区分大小写高亮替换
    * @param source
    * @param patternstring
    * @return
    */
    public static String IgnoreCaseReplace(String source, String patternstring) {
        Pattern p = Pattern.compile(patternstring, Pattern.CASE_INSENSITIVE);
        Matcher mc = p.matcher(source);
        StringBuffer sb = new StringBuffer();
        while (mc.find()) {
            mc.appendReplacement(sb, "<font color='red' >" + mc.group() + "</font>");
        }
        mc.appendTail(sb);
        return sb.toString();
    }
 
}

 

 

 2025-02-02 更新支持全拼、简拼及关键字拼接处理和加强空格的处理

 

 

 运用效果(加入了关键字位置排序):

 

posted @   锐洋智能  阅读(1045)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示