替换成问号: EmojiFilter.filterEmoji(str, “?”);

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 (!isNotEmojiCharacter(codePoint)) {

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

return true;

}

}

return false;

}

/**

* 判断是否为非Emoji字符

*

* @param codePoint 比较的单个字符

* @return

*/

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

* @param replaceStr 替换的字符,为null的话只是简单的过滤

* @return

*/

public static String filterEmoji(String source, String replaceStr) {

if (StringUtils.isBlank(source)) {

return source;

}

if (!containsEmoji(source)) {

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

}

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

int len = source.length();

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

char codePoint = source.charAt(i);

if (isNotEmojiCharacter(codePoint)) {

buf.append(codePoint);

}else if (replaceStr!= null){

buf.append(replaceStr);

}

}

return buf.toString().trim();

}

}

java emoji问号_java过滤emoji字符相关推荐

  1. java emoji过滤_java过滤emoji表情

    java手机端网页常用的过滤emoji表情,注意:过滤常规emoji表情,iso或安卓一些手机自带的特殊表情不在过滤范围 import java.util.regex.Matcher; import ...

  2. java emoji表情_java处理emoji表情的方法

    最近项目中遇到emoji表情存储的问题,后来就在网上搜了很多, 总结出两种方法进行处理: 1.通过正则匹配进行过滤,代码如下: //emoji表情过滤 public static String fil ...

  3. java emoji 编码_Java对Emoji表情编码与解码

    Java对Emoji表情编码与解码,使用到Java Emoji Converter . GitHub地址:https://github.com/binarywang/java-emoji-conver ...

  4. java存储字节_Java字节与字符流永久存储json数据

    使用第三方json转换工具,阿里巴巴json转换工具Fastjson1.2.7. 注意:jar包的导入不再赘述,详见百度. User类,定义两种属性,并创建构造方法与get和set方法 public ...

  5. java 6字节_java过滤四字节和六字节特殊字符

    java7版本中可以这样写: source.replaceAll("[\ud800\udc00-\udbff\udfff\ud800-\udfff]", "*" ...

  6. java 数据库 编码_Java 连接数据库及字符编码

    通过JDBC方式连接MYSQL数据库: public static Connection getConnection(){ String username="root" ; Str ...

  7. java中文问号_java 中文转出来是问号怎么回事?有大神知道怎么改么?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.io.*;import java.net.URLEncoder;public class Example8_3 {public s ...

  8. java 变量 英文_Java中的字符类型变量无论是中文,英文还是数字,都是占4字节。...

    [单选题]一辆公共汽车载有20名乘客向某车站驶来,假如车上每名乘客在该站下车的概率为1/4,且所有乘客在该站下车与否互不关联,则此辆公共汽车上有5名乘客在该站下车的概率约为( ). [单选题]新中国建 ...

  9. java 泛型 问号_Java中泛型 问号的作用

    这是jdk1.5泛型的典型应用: 第一种写法,叫做使用泛型方法: public void thisIsT(List list){ //... } 当然还可以这样写: public void thisI ...

最新文章

  1. jetty作为内嵌服务器自启动
  2. Java对象的生命周期与作用域的讨论(转)
  3. java数据接口之链表_Java数据结构和算法之链表
  4. myjdbc链接数据库.增删改查
  5. java画布颜色切换_在本视频讲解演示中,扩展画布的目的是为了后面制作齿孔时操作起来方便,扩展部分更换了另一种颜色,是为了以示区别,能直观区分出票面部分。...
  6. SVN的搭建(入门篇)
  7. basys2数码管共阳还是共阴_如何判断PLC使用接近开关是PNP还是NPN?
  8. Spark源码分析之Spark Shell(下)
  9. Golang的基础数据类型
  10. amoeba mysql读写分离_MySQL和Amoeba实现同步读写分离centos7
  11. 第十一次 Java作业
  12. 你办培训机构还不知道教育培训管理系统?
  13. 【学习笔记】特殊数论函数求和
  14. 【分享】pushplus入驻集简云平台,实现无代码集成数百款应用
  15. 从 RGB 到 HSV 的转换详细介绍
  16. 经典题:用Java打印空心菱形
  17. 数据库系统-关系代数
  18. tensorflow2的checkpoint恢复训练
  19. python爬取股票网站的历史周价格
  20. 鸿蒙开放机型,鸿蒙今天对友商打响了第一炮!华为多款机型开启鸿蒙尝鲜

热门文章

  1. 微信小程序电影详情功能实现
  2. Pytorch阅读文档之flatten函数
  3. Armijo条件,Wolfe条件,Goldstein条件
  4. mobel web 笔记
  5. 尼康D780相机黑屏的故障原因
  6. 调谐质量阻尼器matlab,调谐质量阻尼器的组成及工作原理
  7. 个人基因组测序降到 500 元以内后基因组学将有哪些大的改变?
  8. windows 启动后台进程
  9. 计算机丢失libdelogo.dll,电脑图标打开就出错,用联机解决说计算机中丢失Duilib.dll 是怎么回事...
  10. 巴西本地支付PagSeguro