/** * 字符串模糊匹配 * <p>example: * <p> user* user-add -- true * <p> user* art-add -- false * @param patt 表达式 * @param str 待匹配的字符串 * @return 是否可以匹配 */ public static boolean vagueMatch(String patt, String str) { // 两者均为 null 时,直接返回 true if(patt == null && str == null) { return true; } // 两者其一为 null 时,直接返回 false if(patt == null || str == null) { return false; } // 如果表达式不带有*号,则只需简单equals即可 (这样可以使速度提升200倍左右) if( ! patt.contains("*")) { return patt.equals(str); } // 正则匹配 return Pattern.matches(patt.replaceAll("\\*", ".*"), str); }
判断:集合中是否包含指定元素(模糊匹配)
/** * 判断:集合中是否包含指定元素(模糊匹配) * <p> 参数 [集合, 元素] */ public BiFunction<List<String>, String, Boolean> hasElement = (list, element) -> { // 空集合直接返回false if(list == null || list.size() == 0) { return false; } // 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配 if (list.contains(element)) { return true; } // 开始模糊匹配 for (String patt : list) { if(SaFoxUtil.vagueMatch(patt, element)) { return true; } } // 走出for循环说明没有一个元素可以匹配成功 return false; };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现