【问题标题】:How to convert string with emoji, convert emoji to string like this url with regex如何使用表情符号转换字符串❤️????,使用正则表达式将表情符号转换为像这个 url 这样的字符串
【发布时间】:2016-08-09 00:13:19
【问题描述】:

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

function emojitourl(str) {

return str;
}


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

【问题讨论】:

  • str 变量中的表情符号不是已经 unicode 了吗?您的功能不是将它们转换为 unicode,而是对它们进行 URL 编码,这完全不同。你到底想要完成什么?
  • @torazaburo 感谢您的回复我希望将表情符号图标转换为类似问题 url 的代码

标签: javascript regex unicode


【解决方案1】:

我想这就是你想要的。 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>');

【讨论】:

  • 感谢您的回复,我使用您的帐号 jsfiddle.net/geqc21u0 但出现错误 SyntaxError: Unexpected token '&gt;'
  • 感谢链接参考。在这个问题 url %EF%B8%8F 中代表的表情符号是“utf16”?
  • @user1575921 我已经检查过它应该可以工作,请重试,我在这个问题 url 中看不到任何 %EF%B8%8F。
【解决方案2】:

我意识到我在这里聚会有点晚了,但作为 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

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多