java 判断字符串中是否包含emoj表情及过滤

过滤微信特殊字符名称 代码】过滤微信特殊字符名称。 阅读详情
package com.luo.dtqjh.utils;

import org.apache.commons.lang.StringUtils;

public class EmojiFilter {
    public static boolean containsEmoji(String source) {
        int len = source.length();
        boolean isEmoji = false;
        for (int i = 0; i < len; i++) {
            char hs = source.charAt(i);
            if (0xd800 <= hs && hs <= 0xdbff) {
                if (source.length() > 1) {
                    char ls = source.charAt(i + 1);
                    int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                    if (0x1d000 <= uc && uc <= 0x1f77f) {
                        return true;
                    }
                }
            } else {
                // non surrogate
                if (0x2100 <= hs && hs <= 0x27ff && hs != 0x263b) {
                    return true;
                } else if (0x2B05 <= hs && hs <= 0x2b07) {
                    return true;
                } else if (0x2934 <= hs && hs <= 0x2935) {
                    return true;
                } else if (0x3297 <= hs && hs <= 0x3299) {
                    return true;
                } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d
                        || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c
                        || hs == 0x2b1b || hs == 0x2b50 || hs == 0x231a) {
                    return true;
                }
                if (!isEmoji && source.length() > 1 && i < source.length() - 1) {
                    char ls = source.charAt(i + 1);
                    if (ls == 0x20e3) {
                        return true;
                    }
                }
            }
        }
        return isEmoji;
    }

    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 (StringUtils.isBlank(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;
        } else {
            if (buf.length() == len) {
                buf = null;
                return source;
            } else {
                return buf.toString();
            }
        }
    }
}
public static void main(String[] args) {
    String string = "😊都嗨😊、齐静😊给你😊";
    System.out.println(EmojiFilter.containsEmoji(string));
    System.out.println(EmojiFilter.filterEmoji(string));
}

可以判断绝大多数表情
转载自:https://blog.youkuaiyun.com/luozisonghao/article/details/53821019

过滤表情工具类,可以过滤掉微信名称里面的表情 可以过滤掉emoji表情等字符串,下载的亲们,请评论下,谢谢,里面有用到StringUtils工具类,如果没有的小伙伴可以来我的资源里面下载! ! 立即下载

相关推荐

判断字符串中是否包含emoji表情

判断字符串是否包含emoji表情

微信拉取用户信息时用户昵称存在特符时过滤

前一段时间做微信公众号项目的时候,出现了微信昵称表情和特符数据库无法存储导致系统报错,于是就尝试解决这个问题,刚开始也是致力于解决数据库存储的额问题,当然这种方式可行的话最好,但是我尝试了各种网上的方法,还是存不了表情和特殊符号,最后由于开发周期的原因,只能退而求次,选择过滤,故本文章只献给那些服务器上数据库不能动的,嫌麻烦的兄弟姐妹。 方法一: public static boole...

Hanlex-Liu的博客 1685

uniapp+uniCloud实现微信小程序一键登录

(用户唯一标识),用户登录成功后,开发者服务器可以将openid和session_key保存,生成一个自定义登录态的token令牌响应给微信小程序,通过token可以查询openid和session_key,小程序下次请求只要携带着token就可以证明已经登录。这个API就是获取用户信息,每次请求都会弹出授权窗口(这个可能会不弹,这个要看你的版本,根据版本来定,不懂的可以留下评论),用户同意后会返回。到这里就可以实现微信一键登录了,快去试试吧,有问题可以在评论区留言,我看见会尽我知道的为你解答。

lb2917的博客 2578

Emoji-java:判断字符串是否包含Emoji表情符

Emoji-javaEmoji-java具体代码实现 Emoji-java github地址: https://github.com/vdurmont/emoji-java 具体代码实现 引入依赖 <dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId> <ve

Apollo 5324

手把手教你用HiNet实现图像隐藏:可逆神经网络实战指南(附代码)

本文提供了一份基于HiNet框架实现图像隐藏的实战指南。通过详细解析可逆神经网络原理,手把手指导环境搭建、模型构建、损失函数设计及训练流程,并附有完整代码。该方法利用单个可逆网络统一隐藏与恢复过程,结合小波变换提升隐蔽性,为信息隐藏应用提供了高效解决方案。

rgv234567的博客 434

手把手教你用Matlab/Simulink搭建PMSM的SMO无感FOC仿真(附相位补偿与离散化代码)

本文详细介绍了基于滑模观测器(SMO)的永磁同步电机(PMSM)无传感器FOC控制方法,通过Matlab/Simulink平台实现从理论到实践的完整流程。内容涵盖SMO核心原理、离散化处理、转子位置估算与相位补偿技术,以及双闭环控制系统搭建,为工程师提供了一套完整的无传感器控制解决方案。

weixin_27038245的博客 256

Java代码判断字符串中是否含有表情

最近在发微信公众号模版消息时遇到一个问题,如果用户的nickname中有表情,那么消息的字体颜色就会发生变化,像这样: 这个问题应该是微信的问题,所以我们不能解决掉这个bug,只能等腾讯爸爸来修复。唯一能做的就是去除掉字符串中的表情,下面是具体代码。 /** * 判断字符串中是否含有表情 * @param source * @return */ ...

wanderlustLee的博客 8606

Delphi 12.3 精简绿色版下载

Delphi精简绿色版基于原版安装,去掉了InterBase、法语、德语、日语,只保留了Delphi Windows 32和Delphi Windows 64桌面开发,其余部分未做任何修改。Delphi精简绿色版不含任何破解,仅供学习和研究,24小时后请自行删除,如需继续使用Delphi,请购买正版。绿色版基于原版安装,未做任何精简和修改。绿色版不含任何破解,仅供学习和研究,24小时后请自行删除,如需继续使用RAD Studio,请购买正版。

全粘工程师 4309

项目中对微信昵称特殊字符的处理

xml的处理方式 <!-- 对微信昵称特殊字符的处理 --> <property name="connectionInitSqls" value="SET NAMES utf8mb4;"/> 配置文件的处理方式 # 对微信昵称特殊字符的处理 spring.datasource.hikari.connectionInitSql=SET ...

moon1_love的博客 3184

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 257

C++实现复制粘贴文本功能

要实现这个功能,我们需要使用操作系统提供的函数来操作剪贴板。在Windows操作系统中,我们可以使用Windows API函数来访问剪贴板。总结起来,使用C++实现复制和粘贴文本功能涉及使用操作系统提供的API函数来操作剪贴板。在本篇文章中,我将向您展示如何使用C++编程语言实现复制和粘贴文本的功能。我们将使用操作系统提供的API来进行剪贴板操作,并编写相应的代码来完成这个任务。如果您使用的是Linux操作系统,您需要使用适当的库和函数来访问剪贴板。函数中,我们首先将一个字符串复制到剪贴板中,然后使用。

PixelDyno的博客 1233

java 检测表情符号_java 判断字符串中是否包含emoj表情及过滤。

package com.luo.dtqjh.utils;import org.apache.commons.lang.StringUtils;public class EmojiFilter {public static boolean containsEmoji(String source) {int len = source.length();boolean isEmoji = false;f...

weixin_39980893的博客 692

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

java 判断字符串中是否包含emoj表情及过滤。

package com.luo.dtqjh.utils; import org.apache.commons.lang.StringUtils; public class EmojiFilter {     public static boolean containsEmoji(String source) {         int len = source.length

FYWT98的博客 5304

MySQL 一一 MySQL基本使用

1、数据库 简单来说,所谓的数据库就是存储数据的容器,而且是永久存储的。 2、为什么需要数据库 3、为什么要学习MySQL数据库 最早MySQL数据,瑞典AB公司开发的一款开源型的关系型数据库。 随着时间的推移,瑞典AB公司把MySQL数据库转让给Sun公司(Java语言的创始公司) 后来,Sun公司经营不善,又把MySQL数据库转让给甲骨文公司(Oracle数据库) 4、数

Guizy 7万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java 判断字符串中是否包含emoj表情及过滤,完美解决。

最近遇到一个很蛋疼的问题,用户如果在客户端输入表情可能会引起一些报错,在查了一些资料后发现很多坑人的代码,我在总结了之后给出了一个比较完美的版本。 亲测可以判断绝大多数表情。 package com.luo.dtqjh.utils;import org.apache.commons.lang.StringUtils;public class EmojiFilter { public stat

luozisonghao的专栏 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

emoj表情保存,emoj错误

前端时间开发app服务,在网上爬取文章时,总是在保存特定的几条内容时出现sql错误,如下图: java.sql.SQLException:Incorrect string value: '\xf0\x9f' ...  等错误,经过分析发现时改文章包含表情emoj符号,在保存数据的时候,mysql数据库设置的编码为UTF-8格式,并不支持,对应的支持编码为utf8mb4 ,可是在设计数据库的时候并

zyong2004的专栏 702

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

判断过滤表情

/**      * 判断是否含有emoj表情      * @param source      * @return      */     public static boolean containsEmoji(String source) {         int len = source.length();         boolean isEmoji = false;

zhoujianjava的博客 314

Android判断是否含有emoji表情

private boolean containsEmoji(String str) { int len = str.length(); for (int i = 0; i < len; i++) { if (isEmojiCharacter(str.charAt(i))) { return true;

bigsungod的专栏 8930

java过滤字符串中的emoji表情

http://doombyte.com/blog/2013/03/20/filter-emoji-emotion-in-string/

7400

java-将评论内容过滤特殊表情emoj符号,保存到mysql中

正常操作评论,保存时,若评论内容含有特殊表情符号,后台将报错如下: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='; nested exception is java.sql.SQLException: Illegal mi...

weixin_30292745的博客 260

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

最近项目中遇到emoji表情存储的问题,后来就在网上搜了很多,总结出两种方法进行处理:1.通过正则匹配进行过滤,代码如下://emoji表情过滤public static String filterEmoji(String source) {if(source != null){Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]...

weixin_42266267的博客 3496

微信昵称emoj表情保存到mysql数据库时报错怎么解决?

为什么80%的码农都做不了架构师?>>> ...

weixin_33915554的博客 313

java过来emoji手机表情,mysql入库

最近入聊天记录入库发现有的数据入库报错,改数据库字符格式也不行,看到网上的例子,拿过来用了下,再次记录一下,方便有用到的朋友。 /** * 过滤手机emoji表情 * author FengXiYang * date 2016-5-11 下午3:19:17 ...

chengshiyou9681的博客 453
上一篇: git 远端代码强制覆盖本地代码
下一篇: 校验字符串是否全部是中文或·
code1Boy
博客等级 码龄10年 45粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值