如何使用表情符号转换字符串❤️,将表情符号转换为字符串,如此问题url %EF%B8%8F
与正则表达式?
function emojitourl(str) {
return str;
}
var str = 'Thats a ';
console.log( emojitourl(str) ); // Thats a ??
答案 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)