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;
        }

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

  • 相关阅读:
    Echarts图表常用功能配置,Demo示例
    Markdown 语法笔记
    EasyUI 通过 Combobox 实现 AutoComplete 效果
    python PIL Image基本的图片拼接、圆形裁减、添加文字
    Fiddler高级用法—Fiddler Script抓取app网页json数据并保存
    python elasticsearch环境搭建
    利用brich实现文本层次聚类,将文本内容分类
    python发送邮件带附件
    python-docx生成word文档
    python-pygal画图
  • 原文地址:https://www.cnblogs.com/yuan-zhou/p/12010918.html
Copyright © 2011-2022 走看看