文档章节

表情符号识别与过滤

U
 UniverseXin
发布于 2017/02/07 16:43
字数 253
阅读 32
收藏 0

贴一份表情符号处理的代码,方便以后使用~~。

public class EmojiFilterUtil {

	/**
	 * 检测是否有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);
			} else {
			}
		}
		if (buf == null) {
			return " ";// 如果没有找到 emoji表情,则返回源字符串
		} else {
			if (buf.length() == len) {// 这里的意义在于尽可能少的toString,因为会重新生成字符串
				buf = null;
				return source;
			} else {
				return buf.toString();
			}
		}

	}

© 著作权归作者所有

上一篇: ajax 跨域 restful
下一篇: 环信-简单操作
U
粉丝 1
博文 11
码字总数 2497
作品 0
厦门
后端工程师
私信 提问
禁止在EditText中输入表情及表情符号的方法

//匹配非表情符号的正则表达式 private final String reg ="^([a-z]|[A-Z]|[0-9]|[u2E80-u9FFF]){3,}|@(?:\w?.)+\w?|[wap.]{4}|[www.]{4}|[blog.]{5}|[bbs.]{4}|[.com]{4}|[.cn]{3}|[.net]{4......

笨笨熊的徒弟
2013/06/03
15.5K
3
苹果发布 iOS 8.3 版本

iOS 8.3发布,本版本采用公测模式来测试系统,预计公测模式将延续到 iOS 9 中。有消息说,有望在今年夏天发布新一代 iOS 系统。 更新详情如下: 增加300多个新的表情符号; 更便于输入表情符...

oschina
2015/04/09
2.8K
14
【20180626】 pt-table-sync 和slave中的table中的字段存在表情包乱码

基于MySQL主从数据不一致 MySQL5.6 binlog statment格式 主从架构,table的字符集是utf8mb4 插入表情符号的时候,slave无法识别,显示乱码 table的字符集是utf8,并且设置某个字段的字符集类...

liuhuang9496
2018/04/26
0
0
Android中EditText禁止输入表情

最近在做的项目中用户编辑资料的时候不希望用户输入表情,如果用户输入表情的话上传给后台要报错,所以需要我们前端做一个判断。下面就来说一下怎么在EditText中屏蔽表情吧。 网上有很多这样...

一本未写完的书
2017/08/27
0
0
iOS自定义的emoji表情键盘

iOS自定义的表情键盘 一、关于emoji表情 随着iOS系统版本的升级,对原生emoji表情的支持也越来越丰富。emoji表情是unicode码中为表情符号设计的一组编码,当然,还有独立于unicode的另一套编...

珲少
2015/11/11
7.7K
3

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部