特殊字符替换查找

266 阅读1分钟
/**
     * @Description 替换关键词,标红
     * @param content: 
     * @param keyword: 
     * @param len: 
     * @return java.lang.String 
     * @author sword
     * @Datetime 2020/7/22 13:50 
*/
private String replaceContent(StringBuilder content, String keyword, Integer len) {   
 //  替换特殊字符  - ? * () [] {} ^ $  先把原文的 【】 替换为不常用字符串
  keyword = keywordkeyword.replaceAll("\\[", "swordddd")
        .replaceAll("\\]", "sssssword")
         .replaceAll("\\-", "[-]")
        .replaceAll("\\?", "[?]")
        .replaceAll("\\*", "[*]")
        .replaceAll("\\^", "[^]")
        .replaceAll("\\$", "[$]")
        .replaceAll("\\.", "[.]")
        .replaceAll("\\+", "[+]")
        .replaceAll("\\{", "[{]")
        .replaceAll("\\}", "[}]")
        .replaceAll("\\|", "[|]")
        .replaceAll("\\(", "[(]")
        .replaceAll("\\)", "[)]")
        .replaceAll("\\\\", "\\\\\\\\")
        .replaceAll("swordddd", "\\[")
        .replaceAll("sssssword", "\\]");    Pattern pt = Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);    
Matcher mt = pt.matcher(content);    
List<Integer> indexList = new ArrayList<>();    
while (mt.find()) {        
        //记录位置 
       indexList.add(mt.start()); 
   }    
for (int i = indexList.size() - 1; i >= 0; i--)
 {        
    //从后向前插入标签      
      Integer index = indexList.get(i);   
         content.insert(index + len, "</span>");  
          content.insert(index, "<span class=\"me-view-content-show\" style=\"color: #c00;\">");
    }    
    return content.toString();
}