1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 过滤特殊字符串和emoji表情符号

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

时间:2019-10-13 01:51:55

相关推荐

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

问题描述

现在很多用户昵称,用户评论中包含特殊字符串和emoji表情,但是在编码传输的出现问题,导致传输失败,还有Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据写不进数据库 。

解决方案

我们可以根据正则表达式过滤掉特殊字符串和Emoji表情符号。

代码实现

package com.zcjd.config;import lombok.extern.slf4j.Slf4j;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** @author 凌乱的枫叶* @ClassName StringUtil* @Description 过滤工具包* @createTime -07-19 10:14:00*/@Slf4jpublic class StringUtil {/*** 过滤特殊字符* @param str* @return*/public static String filterStr (String str){String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";Pattern p = pile(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 = pile("[\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();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。