莫非定律 : 任何事情都没表面看去来那么简单!
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博客,我们一同成长!
不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!
网友评论