|  |  |  | 
|---|
|  |  |  | package com.matrix.core.tools; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.UnsupportedEncodingException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Collection; | 
|---|
|  |  |  | import java.util.Iterator; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Random; | 
|---|
|  |  |  | import java.util.UUID; | 
|---|
|  |  |  | import java.util.regex.Matcher; | 
|---|
|  |  |  | import java.util.regex.Pattern; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.matrix.core.exception.GlobleException; | 
|---|
|  |  |  | import net.sourceforge.pinyin4j.PinyinHelper; | 
|---|
|  |  |  | import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; | 
|---|
|  |  |  | 
|---|
|  |  |  | import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; | 
|---|
|  |  |  | import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; | 
|---|
|  |  |  | import org.apache.commons.collections.CollectionUtils; | 
|---|
|  |  |  | import org.springframework.util.AntPathMatcher; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.UnsupportedEncodingException; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.regex.Matcher; | 
|---|
|  |  |  | import java.util.regex.Pattern; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 字符串操作类,转换数据类型,切割字符串,对象比较等操作 | 
|---|
|  |  |  | 
|---|
|  |  |  | private static final int SAVA_CHAR_LENGTH = 4; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final String EMPTY = ""; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param str 指定字符串 | 
|---|
|  |  |  | * @param strs 需要检查的字符串数组 | 
|---|
|  |  |  | * @return 是否匹配 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static boolean matches(String str, List<String> strs) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (isBlank(str) || CollectionUtils.isEmpty(strs)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (String pattern : strs) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (isMatch(pattern, str)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 判断url是否与规则配置: | 
|---|
|  |  |  | * ? 表示单个字符; | 
|---|
|  |  |  | * * 表示一层路径内的任意字符串,不可跨层级; | 
|---|
|  |  |  | * ** 表示任意层路径; | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param pattern 匹配规则 | 
|---|
|  |  |  | * @param url 需要匹配的url | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static boolean isMatch(String pattern, String url) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | AntPathMatcher matcher = new AntPathMatcher(); | 
|---|
|  |  |  | return matcher.match(pattern, url); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 将字符串中的某些值用指定字符代替 | 
|---|
|  |  |  | 
|---|
|  |  |  | return sb.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 用逗号分开的存的id是否包含对应的id 如比较 123,123,124 中是否包含12这个主键 比对的方法是 字符串中是否包含"^12$" | 
|---|
|  |  |  | * "^12,.*" 或者 ".+,12$" 或者 ".+,12,$" 或者 ".+,12,.+" 字符串 | 
|---|