gpt4 book ai didi

javascript - 在javascript中使用正则表达式替换表情符号unicode符号

转载 作者:可可西里 更新时间:2023-11-01 02:33:40 25 4
gpt4 key购买 nike

众所周知emoji符号最多编码 3 或 4 个字节,因此它可能在我的字符串中占用 2 个符号。例如 '😁wew😁'.length = 7我想在我的文本中找到这些符号并将它们替换为依赖于其代码的值。阅读 SO,我想到了带有 unicode 插件的 XRegExp 库,但还没有找到让它工作的方法。

var str = '😁wew😁';// \u1F601 symbol
var reg = XRegExp('[\u1F601-\u1F64F]', 'g'); // /[ὠ1-ὤF]/g -doesn't make a lot of sense
//var reg = XRegExp('[\uD83D\uDE01-\uD83D\uDE4F]', 'g'); //Range out of order in character class
//var reg = XRegExp('\\p{L}', 'g'); //doesn't match my symbols
console.log(XRegExp.replace(str, reg, function(match){
return encodeURIComponent(match);// here I want to have smth like that %F0%9F%98%84 to be able to map anything I want to this value and replace to it
}));

jsfiddle

我真的不想强制字符串从我的范围中寻找字符序列。有人可以帮助我找到使用正则表达式来做到这一点的方法。

已编辑只是想出了一个枚举所有表情符号的想法。比蛮力更好,但仍在寻找更好的主意

var reg = XRegExp('\uD83D\uDE01|\uD83D\uDE4F|...','g');

最佳答案

\u.... 符号有四个十六进制数字,不多也不少,所以它只能表示最多为 U+FFFF 的代码点。上面的 Unicode 字符表示为成对的代理代码点。

因此需要一些间接的方法。比照。至 JavaScript strings outside of the BMP .

例如,您可以在 [\uD800-\uDBFF](高代理项)范围内查找代码点,当您找到一个代码点时,检查字符串中的下一个代码点是在 [\uDC00-\uDFFF] 范围内(如果不是,则存在严重的数据错误),将两者解释为 Unicode 字符,并用您希望放在那里的任何内容替换它们。这看起来像是通过字符串进行简单循环的工作,而不是正则表达式。

关于javascript - 在javascript中使用正则表达式替换表情符号unicode符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com