import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* 过滤emoji表情与非emoji表情

* @author hsw

*

*/

public class EmojiFilter {

/**

* 检测是否有emoji字符

* @param source 需要判断的字符串

* @return 一旦含有就抛出

*/

public static boolean containsEmoji(String source) {

int len = source.length();

for (int i = 0; i < len; i++) {

char codePoint = source.charAt(i);

if (!notisEmojiCharacter(codePoint)) {

//判断确认有表情字符

return true;

}

}

return false;

}

/**

* 非emoji表情字符判断

* @param codePoint

* @return

*/

private static boolean notisEmojiCharacter(char codePoint) {

return (codePoint == 0x0) ||

(codePoint == 0x9) ||

(codePoint == 0xA) ||

(codePoint == 0xD) ||

((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||

((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||

((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));

}

/**

* 过滤emoji 或者 其他非文字类型的字符

* @param source 需要过滤的字符串

* @return

*/

public static String filterEmoji(String source) {

if (!containsEmoji(source)) {

return source;//如果不包含,直接返回

}

StringBuilder buf = null;//该buf保存非emoji的字符

int len = source.length();

for (int i = 0; i < len; i++) {

char codePoint = source.charAt(i);

if (notisEmojiCharacter(codePoint)) {

if (buf == null) {

buf = new StringBuilder(source.length());

}

buf.append(codePoint);

}

}

if (buf == null) {

return "";//如果没有找到非emoji的字符,则返回无内容的字符串

} else {

if (buf.length() == len) {

buf = null;

return source;

} else {

return buf.toString();

}

}

}

}

java 过滤微信昵称_java过滤微信昵称emoji表情与非emoji的问题解决方法相关推荐

  1. java 微信请求_Java web微信请求拦截器(微信公众号开发)

    Java web微信请求拦截器(微信公众号开发),获取微信用户信息. package com.mvc.interceptor; import com.alibaba.fastjson.JSONObje ...

  2. mysql 过滤emoji表情_MySQL中emoji表情过滤

    问题描述 最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下 Incorrectstringvalue:'\xF0\x9F\x91\x8D\xE6\x94...'forcolumn'co ...

  3. Java | MySQL Emoji表情写入数据库时报错问题解决,Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column

    现象: 将Emoji表情存入数据库时,报如下错误: Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x99\x83\xF ...

  4. maven java版本过低_maven项目编译运行时提示jdk版本过低问题解决方法

    明明使用的是1.8jdk,但是运行项目时提示使用的是java版本是1.5,版本过低. 修改pom.xml,添加如下: maven-compiler-plugin 3.6.1 1.8 1.8 UTF-8 ...

  5. java微信机器人_Java版微信机器人代码

    Java版微信机器人代码 (2014-07-31 09:47:58) 标签: 软件测试 java 上海泽众软件 package com.eiyoung.wechat.web.controller; i ...

  6. java rmi 推送_java 企业微信推送消息 示例源码

    [实例简介] [实例截图] [核心代码] package com.kp.qy.web; import java.io.UnsupportedEncodingException; import java ...

  7. java 微信模板_java开发微信模板消息推送

    概述 微信公众平台开始支持前端网页,大家可能看到很多网页上都有分享到朋友圈,关注微信等按钮,点击它们都会弹出一个窗口让你分享和关注,这个是怎么实现的呢?今天就给大家讲解下如何在微信公众平台前端网页上添 ...

  8. java 创建自定义菜单_Java实现微信公众号自定义菜单的创建方法示例

    本文实例讲述了Java实现微信公众号自定义菜单的创建方法.分享给大家供大家参考,具体如下: 开发公众号的时候可能需要给一些自定义菜单添加事件,比如点击某菜单然后服务端给用户推送信息. 我们也可以使用微 ...

  9. JAVA 实现朋友圈_Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

最新文章

  1. 掩码语言模型(Masked Language Model)mlm
  2. 计算机主键盘的布局,计算机键盘的布局,结构和布置
  3. Java 开发提升十倍生产力:idea 远程一键部署 springboot 到 Docker
  4. python整数与IP地址转换
  5. 【中级软考】软件质量模型的六大特性27个子特性(软件质量特性:功能性、可靠性、易用性、效率性、软件维护性、软件可移植性)
  6. 空间数据引擎oracle_GIS 与Oracle 数据库空间数据格式的转换
  7. java虚拟机源码怎么看_java虚拟机JVM第4讲:从源代码到机器码,发生了什么?
  8. java学习(116):arraylist集合实现类
  9. c语言3368题目,电大《C语言程序设计课程》期末考试复习资料
  10. 学历影响程序员的工资吗?
  11. 运用incremental backup恢复归档GAP的DG-上篇
  12. C++11多线程std::thread的简单使用
  13. 诺基亚java软件下载_诺基亚手机安装JAVA软件程序
  14. java课程 数独 文库_数独教案-完整版
  15. CSAPP 第三版 第六章 家庭作业and so on
  16. Unity3D之太空大战一
  17. 基于数据分析,是否自动档汽车比手动挡更耗油
  18. Intel 处理器模型
  19. 网易资深安卓架构师:2021年Android常见面试题,面试必问
  20. 记录:页面锚定 点击a标签进行锚定到指定的ID

热门文章

  1. 国产计算机硬件发展史,计算机基础-计算机硬件发展史以及硬件
  2. S3C6410启动方式
  3. 用什么软件可以修改PDF文件,软件的操作方法
  4. 实现移动端查看控制台
  5. Element-ui 日期选择器切换类型(type)
  6. iOS 自定义相机功能
  7. 09组-选题与需求分析报告
  8. TVS二极管、环流二极管、稳压(齐纳)二极管、肖特基二极管、开关二极管的分类说明
  9. 写信中“敬启者”与“敬启”的区别
  10. 独立产品灵感周刊 DecoHack #022 - 截图应用如何在一个月收入 8000 美元