java类型过滤文本_JAVA实现过滤掉文本中的表情
比如我们要把微信昵称存入数据库,就需要把表情给过滤掉。
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实现过滤掉文本中的表情相关推荐
- JAVA判定参数类型进行赋值_java – 为什么泛型方法在赋值中更改了参数化类型?...
在编写处理表单数据的通用方法时,我遇到了以下(我认为)未完成的行为.给出以下代码: public class Test { public void someGenericMethod(Integer ...
- java 如何级联删除_Java学习-040-级联删除目录中的文件、目录
之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...
- java c 签名 范例_Java 方法映射到C中的签名
刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与"([LJava/lang/String;)V"的东西的时候肯定会很"蛋疼",完全不懂这是啥东西,怎么 ...
- java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...
- java int格式转换文本_java 文件导出Excel 文本形式转数字格式解决,字段是int导出需求是数字解决方案...
问题:java字段是int类型等,然后导出时是文本,需要操作人员转换为数字格式. 应操作人员要求,导出的时候就是数字格式可以不用转换,方便操作等 java 后台处理过程: 这里我只处理表格的0,2,7 ...
- java读取ppt内容_Java 读取/获取PPT文本
import com.spire.presentation.*; import java.io.FileWriter; public class ExtractText { public static ...
- java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码
java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...
- java scanner 输入中文_java:Scanner实现文本输入
1.包: import Java.util.Scanner 2.使用方法: Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取 ...
- java jtextfield字体大小_Java如何将JTextField文本格式化为大写?
JTextField通过使用方法DocumentFilter向JTextField组件中添加a ,可以轻松地将文本更改为大写setDocumentFilter().该DocumentFilter让我们 ...
最新文章
- Python 深拷贝和浅拷贝的区别
- Spark编程指南V1.4.0(翻译)
- 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ
- 分享一个入门级实操项目,思路非常棒!
- 一句话的设计模式(JAVA版)
- 学好WindowsServer技术的几大秘籍
- IE如何兼容placeholder属性
- 6.exports、module.exports、export、export defalut
- Unix环境高级编程第三版
- ctfmon是什么启动项_Windows7系统启动项里没有ctfmon.exe怎么办?
- android viewgroup点击变色,Android ViewGroup点击效果(背景色)
- Java web+MySQL编写简易候选人投票(完整代码)
- 数据库 Table is marked as crashed and should be repaired 解决办法
- 【BZOJ】3007 拯救小云公主 最短路径
- 千兆以太网和快速以太网有什么区别?
- QT5.14入门教程GUI(五)第5个QT程序-SpinBox
- 软件工程--理论与实践 微课视频第二版 吕云翔 答案(应用 选择 判断)
- 手把手教你打造一个排队叫号系统
- Android DownloadManager 使用
- Shiro核心——Realm
热门文章
- 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
- 【经验】GaussDB(for MySQL)性能优化 —— 日志的“快递驿站”
- 【华为云技术分享】基于ModelArts AI市场算法MobileNet_v2实现花卉分类,支持CPU、GPU、Ascend推理
- 如何使用modelarts训练海量数据
- Kotlin学习笔记 第二章 类与对象 第七节 数据类
- 在虚拟机中是无法运行CarlaUE.sh文件的
- dao.php,DAO.php · Dodd/Training Lab - Gitee.com
- JBoss 7.1.1启动时遇到Address already in use: bind /127.0.0.1:9990的处理办法
- python下载图片被覆盖了_Python OpenCV – 覆盖透明的图像
- python导入math函数取一随机数返回其平方根_Python数字