android emoji 转字符串,android Emoji的处理
1.输入监听emoji,然后拦截掉
/**
* 将系统表情转化为字符串
*
* @param s
* @return
*/
public static boolean havaEmoji(String s) {
int length = s.length();
String context = "";
//循环遍历字符串,将字符串拆分为一个一个字符
for (int i = 0; i < length; i++) {
char codePoint = s.charAt(i);
//判断字符是否是emoji表情的字符
if (isEmojiCharacter(codePoint)) {
//如果是就返回
return true;
}
}
return false;
}
//使用
mBinding.etContent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
int index = mBinding.etContent.getSelectionStart();//获取光标位置
if (havaEmoji(editable.toString())) {//包含表情就删掉这个表情
editable.delete(index - 1, index);//删除光标前的字符
return;
}
}
});
2.不拦截掉emoji,直接约定转换,前端转成String,后台接受时转成emoji
//前台转换
/**
* 将系统表情转化为字符串
*
* @param s
* @return
*/
public static String getString(String s) {
int length = s.length();
String context = "";
//循环遍历字符串,将字符串拆分为一个一个字符
for (int i = 0; i < length; i++) {
char codePoint = s.charAt(i);
//判断字符是否是emoji表情的字符
if (isEmojiCharacter(codePoint)) {
//如果是将以大括号括起来
String emoji = "{" + Integer.toHexString(codePoint) + "}";
context = context + emoji;
continue;
}
context = context + codePoint;
}
return context;
}
/**
* 是否包含表情
*
* @param codePoint
* @return 如果不包含 返回false,包含 则返回true
*/
public 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)));
}
//后台转换
/**
* 将表情描述转换成表情
*
* @param str
* @return
*/
public static String getEmoji(Context context, String str) {
String string = str;
String rep = "\\{(.*?)\\}";
Pattern p = Pattern.compile(rep);
Matcher m = p.matcher(string);
while (m.find()) {
String s1 = m.group().toString();
String s2 = s1.substring(1, s1.length() - 1);
String s3;
try {
s3 = String.valueOf((char) Integer.parseInt(s2, 16));
string = string.replace(s1, s3);
} catch (Exception e) {
e.printStackTrace();
}
}
return string;
}
标签:codePoint,return,String,处理,int,context,android,emoji,Emoji
来源: https://blog.csdn.net/qq_27381325/article/details/88116799
android emoji 转字符串,android Emoji的处理相关推荐
- android消息发送字符串,android - 从Android客户端通过HTTP在HL7消息中发送base64字符串时遇到错误 - 堆栈内存溢出...
我正在android客户端(API 17)中使用HL7消息,并使用Hapi库生成和解析HL7消息.当我传输小的字符串值时,该消息工作正常. 但是我必须通过Http将图像发送到HL7服务器,为此,我正在 ...
- android 表示空字符串,Android Logcat获取空字符串时非常奇怪的行为
这是一个有趣的问题.我只是在LogRabbit中尝试过,并且能够看到相同的结果. 我快速浏览了android源代码,看到Log.W(-)最终以本机代码显示并在logd_write.c中得到处理 这基本 ...
- android获取未知字符串,android – 未知的URL内容:// downloads / my_dow...
我正在使用Download Manger下载一些多媒体文件并对其进行分类.我也在使用Crashlytics,这是一个错误,我经常在不同的设备和Android版本上得到它.我正在寻找你的解决方案/建议! ...
- android 去空字符串,android – TextUtils.isEmpty()方法为空字符串返回false
对于空字符串,它应该返回true. 从TextUtils的源代码: public static boolean isEmpty(@Nullable CharSequence str) { if (st ...
- android读取xml 字符串,Android 读取本地Xml文件,并转换成String
问题 不是解析本地 xml 文件, 而是要将 xml 文件中的所有内容(包含格式,标签等),直接转换成 String. 与前端H5页面交互时, iOS 在请求远程 xml 文件耗时太长(有时需要4~5 ...
- android 上传字符串,Android中发送Http请求(包括文件上传、servlet接收)的实例代码...
/** * 通过拼接的方式构造请求内容,实现参数传输以及文件传输 * @param actionUrl * @param params * @param files * @return * @thro ...
- Android 显示输入法中的emoji表情以及String字符串转码
Android 显示输入法中的emoji表情以及String字符串转码 实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unic ...
- android 表情字符串,Android 显示输入法中的emoji表情以及String字符串转码
实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unicode编码字符串转化为String字符串 发送时将String字符串转换 ...
- ios emjoi java_前端App开发,实际工作中三端(android,ios,前端H5)emoji表情显示解决方案...
想起最近开发APP的时候,产品提的一个需求,用户的帖子正文还有评论内容里,要能够显示emoji表情,因为我们这款app是混合开发的,APP里的发贴,发评论是原生做的(android和ios),但帖子详 ...
最新文章
- 白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
- Windows Forms DataGridView 中合并单元格
- MMSE法用于MIMO系统
- 最佳网页宽度及其实现
- IP和网段及子网掩码基础知识
- 阿里技术面:ReadWriteLock读写之间互斥吗?
- C++特殊符号:【优先级】
- shell特殊符、sort、tee、
- 欧几里德算法(模板)
- java中的linearnumexpr,java - Cplex中的上限和下限等于0.0(在cplex中) - 堆栈内存溢出...
- EPSG:900913 与 EPSG:4326 转换方法
- Vue2.0搭建脚手架(vue-cli)
- Python实现分卷压缩
- 电压(电流)运算放大器为什么要增大(减小)输入阻抗?
- Python几种开发工具介绍
- android中的ellipsize设置(省略号的问题)
- 去哪儿网上海景点数据爬虫分析
- 奥克兰大学CS110(Auckland University Computer Science 110)的一些算法(2022)
- 获取32位整型变量中某一位的bit值
- 零跑C11的“一骑绝尘”