比如我们要把微信昵称存入数据库,就需要把表情给过滤掉。

package com.zjr.common.utils;

import org.apache.commons.lang3.StringUtils;

public class EmojiFilter {

/**

* 检测是否有emoji字符

*

* @param source

* @return 一旦含有就抛出

*/

public static boolean containsEmoji(String source) {

if (StringUtils.isBlank(source)) {

return false;

}

int len = source.length();

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

char codePoint = source.charAt(i);

if (isEmojiCharacter(codePoint)) {

// do nothing,判断到了这里表明,确认有表情字符

return true;

}

}

return false;

}

private static boolean isEmojiCharacter(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;

int len = source.length();

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

char codePoint = source.charAt(i);

if (isEmojiCharacter(codePoint)) {

if (buf == null) {

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

}

buf.append(codePoint);

}

}

if (buf == null) {

return source;// 如果没有找到 emoji表情,则返回源字符串

} else {

if (buf.length() == len) {// 这里的意义在于尽可能少的toString,因为会重新生成字符串

buf = null;

return source;

} else {

return buf.toString();

}

}

}

}

原文:http://blog.csdn.net/kollyqaq/article/details/51355923

java类型过滤文本_JAVA实现过滤掉文本中的表情相关推荐

  1. JAVA判定参数类型进行赋值_java – 为什么泛型方法在赋值中更改了参数化类型?...

    在编写处理表单数据的通用方法时,我遇到了以下(我认为)未完成的行为.给出以下代码: public class Test { public void someGenericMethod(Integer ...

  2. java 如何级联删除_Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  3. java c 签名 范例_Java 方法映射到C中的签名

    刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与"([LJava/lang/String;)V"的东西的时候肯定会很"蛋疼",完全不懂这是啥东西,怎么 ...

  4. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  5. java int格式转换文本_java 文件导出Excel 文本形式转数字格式解决,字段是int导出需求是数字解决方案...

    问题:java字段是int类型等,然后导出时是文本,需要操作人员转换为数字格式. 应操作人员要求,导出的时候就是数字格式可以不用转换,方便操作等 java 后台处理过程: 这里我只处理表格的0,2,7 ...

  6. java读取ppt内容_Java 读取/获取PPT文本

    import com.spire.presentation.*; import java.io.FileWriter; public class ExtractText { public static ...

  7. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...

  8. java scanner 输入中文_java:Scanner实现文本输入

    1.包: import Java.util.Scanner 2.使用方法: Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取 ...

  9. java jtextfield字体大小_Java如何将JTextField文本格式化为大写?

    JTextField通过使用方法DocumentFilter向JTextField组件中添加a ,可以轻松地将文本更改为大写setDocumentFilter().该DocumentFilter让我们 ...

最新文章

  1. Python 深拷贝和浅拷贝的区别
  2. Spark编程指南V1.4.0(翻译)
  3. 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ
  4. 分享一个入门级实操项目,思路非常棒!
  5. 一句话的设计模式(JAVA版)
  6. 学好WindowsServer技术的几大秘籍
  7. IE如何兼容placeholder属性
  8. 6.exports、module.exports、export、export defalut
  9. Unix环境高级编程第三版
  10. ctfmon是什么启动项_Windows7系统启动项里没有ctfmon.exe怎么办?
  11. android viewgroup点击变色,Android ViewGroup点击效果(背景色)
  12. Java web+MySQL编写简易候选人投票(完整代码)
  13. 数据库 Table is marked as crashed and should be repaired 解决办法
  14. 【BZOJ】3007 拯救小云公主 最短路径
  15. 千兆以太网和快速以太网有什么区别?
  16. QT5.14入门教程GUI(五)第5个QT程序-SpinBox
  17. 软件工程--理论与实践 微课视频第二版 吕云翔 答案(应用 选择 判断)
  18. 手把手教你打造一个排队叫号系统
  19. Android DownloadManager 使用
  20. Shiro核心——Realm

热门文章

  1. 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
  2. 【经验】GaussDB(for MySQL)性能优化 —— 日志的“快递驿站”
  3. 【华为云技术分享】基于ModelArts AI市场算法MobileNet_v2实现花卉分类,支持CPU、GPU、Ascend推理
  4. 如何使用modelarts训练海量数据
  5. Kotlin学习笔记 第二章 类与对象 第七节 数据类
  6. 在虚拟机中是无法运行CarlaUE.sh文件的
  7. dao.php,DAO.php · Dodd/Training Lab - Gitee.com
  8. JBoss 7.1.1启动时遇到Address already in use: bind /127.0.0.1:9990的处理办法
  9. python下载图片被覆盖了_Python OpenCV – 覆盖透明的图像
  10. python导入math函数取一随机数返回其平方根_Python数字