博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目总结31:Java字符串过滤特殊字符和表情符号
阅读量:6162 次
发布时间:2019-06-21

本文共 2031 字,大约阅读时间需要 6 分钟。

项目总结31:Java字符串过滤特殊字符和表情符号

 

直接上源码

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

 

 

转载于:https://www.cnblogs.com/wobuchifanqie/p/11059226.html

你可能感兴趣的文章
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
禁用ViewState
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>