美文网首页
JS前端去掉emoji表情和Java后台处理emoji表情方法

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

作者: 阿飞云漫步 | 来源:发表于2018-04-24 14:46 被阅读0次

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

    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

    相关文章

      网友评论

          本文标题:JS前端去掉emoji表情和Java后台处理emoji表情方法

          本文链接:https://www.haomeiwen.com/subject/qdrjlftx.html