java 字符串文本匹配并高亮显示处理
生活随笔
收集整理的這篇文章主要介紹了
java 字符串文本匹配并高亮显示处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;/*** @author hutf* @createTime 2022年07月21日 20:39:00*/
public class MLightUtils {/*** @param list 數據源匹配 例如: {"難的","這世界","世界上最", "世界上最難", "最難的職業","意志","堅韌不拔","職業就是","程序員","他們"}* @param str 你所要處理的字符串 例如: 世界上最難的職業* @param leftTag 左標簽字符串 例如:<font style='color:red;'>* @param rightTag 右標簽字符串 例如:</font>* @return*/public static String getMRedText(List<String> list, String str,String leftTag,String rightTag) {if (leftTag == null || "".equals(leftTag)) leftTag = "<font style='color:red;'>";if (rightTag == null || "".equals(rightTag)) rightTag = "</font>";List<MLight> l = new ArrayList<>();for (String item : list) {if (str.contains(item)) {int startIndex = str.indexOf(item);int endIndex = startIndex + item.length() - 1;l.add(new MLight(startIndex, 0,leftTag));l.add(new MLight(endIndex, 1,rightTag));}}if (l.size() == 0) return str;Collections.sort(l, (o1, o2) -> {if (o1.getIndex().equals(o2.getIndex())) return o2.getType() - o1.getType();return o1.getIndex() - o2.getIndex();});char[] strChars = str.toCharArray();StringBuffer sb = new StringBuffer();for (int i = 0; i < strChars.length; i++) {char item = strChars[i];List<MLight> currentIndexMLights = getCurrentMReds(i, l);if (currentIndexMLights.size() == 0) {sb.append(item);continue;}for (MLight item0 : currentIndexMLights) {if (item0.getType() == 0) sb.append(item0.getTagTxt());}sb.append(item);for (MLight item0 : currentIndexMLights) {if (item0.getType() == 1) sb.append(item0.getTagTxt());}}return sb.toString();}// 獲取某個位置下的 高亮對象private static List<MLight> getCurrentMReds(Integer index, List<MLight> list) {List<MLight> rs = new ArrayList<>();for (MLight mLight : list) {if (mLight.getIndex().equals(index)) {rs.add(mLight);}}return rs;}// 高亮顯示類實體static class MLight {private Integer index;// 目標字符串的 下標private Integer type;// 0代表左邊,1代表右邊private String tagTxt;// 標簽文本字符串public String getTagTxt() {return tagTxt;}public void setTagTxt(String tagTxt) {this.tagTxt = tagTxt;}public Integer getIndex() {return index;}public void setIndex(Integer index) {this.index = index;}public Integer getType() {return type;}public void setType(Integer type) {this.type = type;}public MLight(Integer index, Integer type,String tagTxt) {this.index = index;this.type = type;this.tagTxt = tagTxt;}}
}
總結
以上是生活随笔為你收集整理的java 字符串文本匹配并高亮显示处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电网调度自动化系统
- 下一篇: IDEA中git的Cherry-Pick