java 过滤特殊字符串和emoji表情符号

时间:2025-02-14 17:29:08
package com.zcjd.config; import lombok.extern.slf4j.Slf4j; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author 凌乱的枫叶 * @ClassName StringUtil * @Description 过滤工具包 * @createTime 2022-07-19 10:14:00 */ @Slf4j public class StringUtil { /** * 过滤特殊字符 * @param str * @return */ public static String filterStr (String str){ String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); } /** * 过滤emoji表情,将表情替换成* * @param source * @return */ public static String filterEmoji(String source) { if(source != null) { Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]|" + "[\ud83e\udd00-\ud83e\uddff]|[\u2300-\u23ff]|[\u2500-\u25ff]|[\u2100-\u21ff]|[\u00a0-\u0fff]|[\u2b00-\u2bff]|[\u2d06]|[\u3030]" ,Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE ) ; Matcher emojiMatcher = emoji.matcher(source); if (emojiMatcher.find()) { source = emojiMatcher.replaceAll("*"); return source ; } return source; } return source; } /** * 过滤表情符号 * @param content * @return */ public static String filterEmoji2(String content) { StringBuilder sb = new StringBuilder(); for (char ch : content.toCharArray()) { if (!Character.isHighSurrogate(ch) && !Character.isLowSurrogate(ch)) { sb.append(ch); } } if (sb.length() < content.length()) { log.info(content.length() + " 过滤掉 " + sb.length()); } return sb.toString(); } }