日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 字符串文本匹配并高亮显示处理

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 字符串文本匹配并高亮显示处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。