我在尝试替换 JS 中某些文本中的一些 \_
时遇到了困难。
我尝试了 fromCharCode
和 split
的各种组合,但似乎无法成功。
在所有这些情况下,输出与输入相同,我无法删除或替换垃圾字符。看来反斜杠下划线对于 JS 来说是不可见的。想知道这是否与字符串是 unicode 有关?
感谢建议!
let v1 = {
s: "生病以后,爸爸\_什么\_酒\_都\_不\_能喝了"
}
let v2 = { ...v1 } // copy
let v3 = { ...v2 } // copy
v2.s = v2.s.replace(/\\/g, "X")
v3.s = v3.s.split(String.fromCharCode(92)).join("Y")
console.log("v1", v1)
console.log("v2", v2)
console.log("v3", v3)
此时我可能会弄乱 sed 脚本;.;
相关检查未解决: Javascript and backslashes replace Replace back slash (\) with forward slash (/) Converting backslashes into forward slashes using javascript does not work properly?
最佳答案
当您像这样分配字符串时:
let v1 = {
s: "生病以后,爸爸\_什么\_酒\_都\_不\_能喝了"
}
所有反斜杠都将被删除,您的结果字符串将生病了,爸爸_什么_酒_都_不_能喝了
所以你也必须转义这些反斜杠:
let v1 = {
s: "生病以后,爸爸\\_什么\\_酒\\_都\\_不\\_能喝了"
}
现在要达到您的预期结果,您可以使用下一个替换正则表达式:
v1.s = v1.s.replace(/\\_/g, 'X');
关于javascript - 替换 unicode 文本中的 JS 反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071455/