如何使用表情符号❤️转换字符串,将表情符号转换为字符串,如此网址与正则表达式

时间:2016-04-17 07:48:16

标签: javascript regex unicode

如何使用表情符号转换字符串❤️,将表情符号转换为字符串,如此问题url %EF%B8%8F与正则表达式?

function emojitourl(str) {

return str;
}


var str = 'Thats a  ';
console.log( emojitourl(str) ); // Thats a ??

2 个答案:

答案 0 :(得分:0)

我想这就是你想要的。 This page帮助我理清了表情符号字符的范围。显然,表情符号字符由两个连续的UTF16字符表示,称为代理对。作为辅助信息,每个表情符号字符将字符串的长度值增加2。

function emojiToUnicode(s) {
return s.match(/\ud83c[\udf00-\udfff]|\ud83d[\udc00-\ude4f]|\ud83d[\ude80-\udeff]/g)
        .map( e => "\\u" + e.charCodeAt(0).toString(16) + "\\u" + e.charCodeAt(1).toString(16))
}

var str = 'Thats a  ';
document.write('<pre>' + JSON.stringify(emojiToUnicode(str), 0, 2) + '</pre>');

答案 1 :(得分:0)

我意识到我在这里参加聚会有点晚了,但是根据Redu的回答,这里是更新后的正则表达式,以确保您获得更多表情符号。

function emojiToUnicode(s) {
    return s.match(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g)
        .map( e => "\\u" + e.charCodeAt(0).toString(16) + "\\u" + e.charCodeAt(1).toString(16))
}

并且我还想补充一点,如果您想保留原始字符串,而只用unicode替换表情符号,则应该执行以下操作:

function emojiToUnicode(str) {
    return str.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, function(e) {
        return "\\u" + e.charCodeAt(0).toString(16) + "\\u" + e.charCodeAt(1).toString(16);
    });
}

(更新的正则表达式搜索的积分:https://stackoverflow.com/a/41543705/6756350