表情符号过滤
来源:互联网 发布:威宁谢成本数据库 编辑:程序博客网 时间:2024/05/06 08:22
public class EmojiFilter {
/**
* 过滤emoji 或者 其他非文字类型的字符
*
* @param source 需要被过滤的字符串
* @return
*/
public static String filterEmoji(Object source) {
String sourceStr = " ";//针对微信传递过来的值为空数据时,默认为空字符串
if(Toolkit.isEmpty(source)){
return sourceStr;
}
sourceStr = source.toString();
Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher emojiMatcher = emoji.matcher(sourceStr);
if (emojiMatcher.find()) {
sourceStr = emojiMatcher.replaceAll("");
return sourceStr;
}
return sourceStr;
}
// emoji表情字符串 mysql utf8数据库无法o.
public static String filterEmoji1(String source) {
if(source != null)
{
Pattern emoji = Pattern.compile ("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",Pattern.UNICODE_CASE | Pattern . CASE_INSENSITIVE ) ;
Matcher emojiMatcher = emoji.matcher(source);
if ( emojiMatcher.find())
{
source = emojiMatcher.replaceAll("*");
return source ;
}
return source;
}
return source;
}
/**
* 将emoji表情替换成*
*
* @param source
* @return 过滤后的字符串
*/
public static String filterEmoji(String source) {
if(StringUtils.isNotBlank(source)){
return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", "*");
}else{
return source;
}
}
public static void main(String[] arg ){
try{
String text = "啦啦啦\uD83C\uDFA6 face\uD860\uDD5D \uD860\uDE07 \uD860\uDEE2 \uD863\uDCCA \uD863\uDCCD \uD863\uDCD2 \uD867\uDD98 ";
String text1 = EmojiFilter.emojiConvert1(text);
System.out.println(text1);
String text2 = EmojiFilter.emojiRecovery2(text1);
System.out.println(text2);
}catch (Exception ex){
ex.printStackTrace();
}
}
/**
* @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集)
* @param str
* 待转换字符串
* @return 转换后字符串
* @throws UnsupportedEncodingException
* exception
*/
public static String emojiConvert1(String str)
throws UnsupportedEncodingException {
String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
try {
matcher.appendReplacement(
sb,
"[["
+ URLEncoder.encode(matcher.group(1),
"UTF-8") + "]]");
} catch(UnsupportedEncodingException e) {
// LOG.error("emojiConvert error", e);
throw e;
}
}
matcher.appendTail(sb);
// LOG.debug("emojiConvert " + str + " to " + sb.toString()
// + ", len:" + sb.length());
return sb.toString();
}
/**
* @Description 还原utf8数据库中保存的含转换后emoji表情的字符串
* @param str
* 转换后的字符串
* @return 转换前的字符串
* @throws UnsupportedEncodingException
* exception
*/
public static String emojiRecovery2(String str)
throws UnsupportedEncodingException {
String patternString = "\\[\\[(.*?)\\]\\]";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
try {
matcher.appendReplacement(sb,
URLDecoder.decode(matcher.group(1), "UTF-8"));
} catch(UnsupportedEncodingException e) {
// LOG.error("emojiRecovery error", e);
throw e;
}
}
matcher.appendTail(sb);
// LOG.debug("emojiRecovery " + str + " to " + sb.toString());
return sb.toString();
}
}
0 0
- 表情符号过滤
- 表情符号过滤
- java过滤utf8mb4表情符号
- EditText 表情符号过滤
- Android Edittext过滤表情符号
- EditText过滤表情符号
- python 利用正则过滤表情符号
- php过滤微信表情符号
- ios字符串过滤表情符号的方法
- UITextView UITextField 检测并过滤Emoji表情符号
- 表情符号
- iOStextfield 限制输入字符长度和过滤表情符号
- iOStextfield 限制输入字符长度和过滤表情符号
- iOS UI篇13- UITextView、UITextField检测并过滤Emoji表情符号
- 网上表情符号全集
- 插件59:改变表情符号
- Emoji表情符号兼容方案
- Emoji表情符号兼容方案
- 元素竖向的百分比设定是相对于容器的高度吗?
- 利用anchorPoint和position实现缩放
- 淘宝京东购物车价格计算,商品店铺联动js
- CentOS-7-x86_64编译ceph-10.2.1和ceph-10.2.2
- 双重检查锁定与延迟初始化
- 表情符号过滤
- 205. Isomorphic Strings
- 小马哥--高仿小米4 主板型号Q5 6582芯片刷机拆机主板图与开机界面图
- 326. Power of Three [easy] (Python)
- 金蝶K3-WISE V13.1加密狗驱动-50用户补丁
- Javascript学习笔记part1(Table单元格相同数据自动合并)补充
- redis
- OC中的selector选择子
- POI操纵EXCEL文档之导入文档(一)