JS前端去掉emoji表情和Java后台处理emoji表情方法

莫非定律 : 任何事情都没表面看去来那么简单!emoji表情在项目中使用,因为其特殊的编码格式,经常导致在网络传输、编解码、以及数据入库中带来一些问题!下面简单介绍使用Js和java处理移除emoji表情!Emoji 表情的相关基础内容介绍,请读者自行在网上查找资料!前端JS代码//emojob编码集,因为emoji表情在不断地增加,下面的reg可能在未来会不能满足…

大家好,又见面了,我是全栈君。

莫非定律 : 任何事情都没表面看去来那么简单!

emoji表情在项目中使用,因为其特殊的编码格式,经常导致在网络传输、编解码、以及数据入库中带来一些问题!

下面简单介绍使用Js和java处理移除emoji表情!

Emoji 表情的相关基础内容介绍,请读者自行在网上查找资料!

前端JS代码

//emojob编码集,因为emoji表情在不断地增加,下面的reg可能在未来会不能满足判断,使用者需要注意!
    var emojiReg = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi; 

    //输入框输入内容时候触发,进行移除emoji表情的操作
    $('#msg').on('input',function(){
        var msgHdnValue = $(this).val();
        var isEmoji = validateMsgEmoji(msgHdnValue);
        //替换emoji表情,以及末尾空格,和 空格
        msgHdnValue =  msgHdnValue.replace(emojiReg,"").replace(/(\s*$)/g,"").replace(/[ ]+/g,"").trim();


        if(isEmoji){
                $(this).html(msgHdnValue);//替换了内容后,输入框关标会发生变化,移到输入框开始位置!
                po_Last_Div($(this)[0]); //定位将关闭移到输入框结尾处
        }   
    })

 /** * 验证发送消息中是否包含emoji表情 * @param msg * @returns {Boolean} */
    function validateMsgEmoji(msg){
        if (regStr.test(msg)) {
            return true;
        }
        return false;
    }

    /** * 光标定位最后一行 * @param obj */
    function po_Last_Div(obj) {
        if (window.getSelection) {
            obj.focus();
            var range = window.getSelection();
            range.selectAllChildren(obj);
            range.collapseToEnd();//光标移至最后
        }
        else if (document.selection) {
  
  //ie10 9 8 7 6 5
            var range = document.selection.createRange();//创建选择对象
            //var range = document.body.createTextRange();
            range.moveToElementText(obj);//range定位到obj
            range.collapse(false);//光标移至最后
            range.select();
        }
    }

**使用input进行监控,主要是因为在IOS系统,keyup事件无法监听,或者兼容性不好!**

java后端操作,使用方法比较暴力,直接进行正则替换!

代码如下:

msg = msg.replaceAll("[^\\u0000-\\uFFFF]", "");

参考博文

Emoji的编码以及常见问题的解决方法
input、textarea、div(contenteditable=true)光标定位到最后



如果您觉得这篇博文对你有帮助,请点个赞,让更多的人看到,谢谢!


如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121106.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python批量修改文件名代码_python批量修改文件名的实现代码

    python批量修改文件名代码_python批量修改文件名的实现代码coding utf 8 批量修改文件名 importosimpo st r d s d 用于匹配旧的文件名 需含分组 re match old file name re compile re st 要修改的目录 WORKING PATH r F Gallery

    2025年8月19日
    2
  • RowBounds分页原理、RowBounds的坑

    RowBounds分页原理、RowBounds的坑背景说明项目中经常会使用分页查询,有次使用了RowBounds进行分页,因为很多场景或网上也看到很多这样的写法,所以我也在项目中使用了该类进行分页。但是有次线上却抛了异常,由此引发了对RowBounds原理的探究。一:RowBounds分页原理Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结果集进行分页,也就是人们常说的逻辑分页,而非物理分页(物理分页当然就是我们在sql语句中指定limit和offset值)。RowBou

    2022年9月22日
    2
  • 魔兽世界正式服模拟(战地模拟器破解版)

    背景:从06年玩魔兽到现在也13年了。5.48的时候在国外读研、时间特别多,在艾苏恩的“魔兽夜店”lm公会(永远记得这段快乐的时光),围攻奥格达到了我的顶峰(带团),回国后找工作6.X没玩。从7.x就开始咸鱼,H都没通。现在也得结婚成家了。以后更加咸鱼了,指不定哪天就AFK。差不多06年的时候就混迹于大芒果、藏宝湾这两个网站,虽然是高中生,那时候用家里的破电脑就开始搭建单机版,改数据库。晚上在自己…

    2022年4月15日
    207
  • Django(35)Django请求生命周期分析(超详细)

    Django(35)Django请求生命周期分析(超详细)Django请求生命周期分析1.客户端发送请求在浏览器输入url地址,例如www.baidu.com,浏览器会自动补全协议(http),变为http://www.baidu.com,现在部分网站都

    2022年7月29日
    10
  • PySpark-prophet预测

    PySpark-prophet预测简介Prophet是facebook开源时间序列预测工具,使用时间序列分解与机器学习拟合的方法进行建模预测。关于prophet模型优点我不打算说,网络上的文章非常多,各种可视化,和参数的解释与demo演示。但是在正在用到工业上大规模的可供学习的中文材料并不多。本文打算使用pyspark进行多序列预测建模,会给出一个比较详细的脚本,供交流学习,重点在于使用hive数据/分布式,以及中间数据预处理,以及pandas_udf对多条序列进行循环执行。背景说明,在十万级别的sku序列上使用prophet预测每

    2022年6月20日
    47
  • Linux内核启动及根文件系统载入过程「建议收藏」

    Linux内核启动及根文件系统载入过程

    2022年1月25日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号