gpt4 book ai didi

javascript - 为什么我不能替换包含 unicode 的字符串?

转载 作者:行者123 更新时间:2023-12-01 01:18:13 25 4
gpt4 key购买 nike

我正在尝试使用具有 JavaScript 风格的正则表达式替换字符串中的 unicode。但是,我无法用所需的字符串替换 unicode 字符串。

这按预期工作:

function replacer(match, p1) {
return "World";
}
var newString = 'Hello9A'.replace(/[0-9A-F]{2}/g, replacer);
console.log(newString); // HelloWorld

这是我试图让它工作的代码:

function replacer(match, p1) {
console.log("match: ", match);
console.log("p1: ", p1);
return "World";
}
var newString = 'Hello\u0B70'.replace(/\\u[0-9A-F]{4}/g, replacer);
console.log(newString);

我期望的newString应该是HelloWorld。但是,我收到 Hello୰

我什至在 Regex101 上进行了测试,并且该正则表达式确实捕获了 \u0B70。同时,我无法注销 matchp1,我不确定为什么。

用我想要的字符串替换该 unicode 的正确方法是什么?

最佳答案

你的模式

\\u[0-9A-F]{4}

将匹配字符串的一部分,字面上包含一个反斜杠,后跟一个u,然后是4个十六进制字符。但是你的输入字符串只包含 6 个字符,其中 5 个是“hello”:

console.log('Hello\u0B70');
console.log('Hello\u0B70'.length);

您需要匹配实际的 Unicode 字符:

function replacer(match, p1) {
console.log("match: ", match);
console.log("p1: ", p1);
return "World";
}
var newString = 'Hello\u0B70'.replace(/\u0B70/g, replacer);
console.log(newString);

如果您想匹配任何 unicode 字符(基本上翻译为“任何字符”),您可以使用字符集,例如

[\u0000-\uFFFF]

但是像“Hello”这样的字母字符当然也是 Unicode,所以它们也会被匹配,这不是你想要的 - 找出你想要匹配的字符的精确范围,然后输入该范围进入字符集。

关于javascript - 为什么我不能替换包含 unicode 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509800/

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