package com.fr.design.mainframe.alphafine; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.alphafine.search.manager.impl.ProductNewsSearchManager; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import java.util.Set; /** * @author hades * @version 11.0 * Created by hades on 2022/4/20 */ public class AlphaFineUtil { public static String highLightModelName(String modelName, String[] strings) { if (strings == null || ArrayUtils.isEmpty(strings)) { return modelName; } for (String string : strings) { // 高亮分词 跳过高亮颜色本身的字符 boolean skipHighLight = modelName.contains(AlphaFineConstants.HIGH_LIGHT_COLOR) && AlphaFineConstants.HIGH_LIGHT_COLOR.contains(string); if (skipHighLight) { continue; } String primaryStr = getReplacedString(modelName, string); if (StringUtils.isNotEmpty(primaryStr)) { modelName = modelName.replaceAll("(?i)" + primaryStr, "|" + primaryStr + "|"); } } modelName = "
" + modelName.replaceAll("\\|", StringUtils.EMPTY) + ""; return modelName; } private static String getReplacedString(String modelName, String string) { // 如果是直接包含了高亮字符 返回 if (StringUtils.contains(modelName, string)) { return string; } //需要考虑modelName有空格的情况 //比如现在是work boo k 搜索词是workb,应该要替换的部分是work b //先去掉已经匹配替换过的部分,因为考虑到分词的情况,可能会进行多次替换 final String regex = "\\|