zoukankan      html  css  js  c++  java
  • Java实现文本中的关键字高亮,匹配所有长度

    这个方法还不完整,后面想起来再看,直接放代码

        public static String getHeightlightWord(String textWord, String key){
            StringBuffer sb = new StringBuffer("");
            String tempWord = textWord == null? "" : textWord.trim();
            String tempKey = key == null? "" : key.trim();
            if("".equals(tempWord) || "".equals(tempKey)){
                return tempWord;
            }else {
                sb.append(tempWord);
            }
            String upperWord = tempWord.toUpperCase();
            String upperKey = tempKey.toUpperCase();
            if(!upperWord.contains(upperKey)){
                return tempWord;
            }else {
                int keyLen = upperKey.length();
                int thisMathIndex = 0;
                List<Map<Integer, String>> matchList = new ArrayList<Map<Integer, String>>();
                while((thisMathIndex = upperWord.indexOf(upperKey, thisMathIndex)) != -1){
                    Map<Integer, String> map = new HashMap<Integer, String>();
                    map.put(thisMathIndex, tempWord.substring(thisMathIndex, thisMathIndex + keyLen));
                    matchList.add(map);
                    thisMathIndex += keyLen;
                }
                int thisKey = 0;
                int keys = 0;
                for(Map<Integer, String> map : matchList){
                    thisKey = getKey(map);
                    keys += thisKey;
                    sb.replace(thisKey, thisKey + keyLen, "<span style='background-color: yellow;'>"+map.get(thisKey)+"</span>");
                    keys += "<span style='background-color: yellow;'></span>".length();
                }
            }
                return sb.toString();
            }
        private static int getKey(Map<Integer, String> obj){
            Set<Integer> keySet = obj.keySet();
            int firstKey = -1;
            for(int key : keySet){
                firstKey = key;
                if(firstKey != -1){
                    break;
                }
            }
            return firstKey;
        }

    以上代码可实现一次高亮,余下的问题就在于如何多次改变字符串的长度后能定位到需要更改的字符串(即多次高亮),打个卡先,有空再弄

  • 相关阅读:
    Java沉思录之重识String
    【python】 爬虫-爬取新闻
    【大数据】水质分析————(数据预处理)对水质图片的处理
    神经网络 鸢尾花数集预测
    【python 基础】词云
    【数据结构】字符串匹配
    【算法】 分治
    【数据结构】队列
    【数据结构】栈 的 顺序表示
    【数据结构】 线性表 的 链式存储结构
  • 原文地址:https://www.cnblogs.com/yuan-zhou/p/12010918.html
Copyright © 2011-2022 走看看