替换Unicode文本中的JS反斜杠

时间:2018-10-30 19:19:01

标签: javascript replace backslash

我很难在JS的某些文本中替换某些\_。 我已经尝试了fromCharCodesplit的各种组合,但似乎找不到成功。

在所有这些情况下,输出都与输入相同,我无法删除或替换垃圾字符。 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?

1 个答案:

答案 0 :(得分:1)

当您像这样分配字符串时:

let v1 = {
  s: "生病以后,爸爸\_什么\_酒\_都\_不\_能喝了"
}

所有反斜杠将被删除,您的结果字符串将为生病以后,爸爸_什么_酒_都_不_能喝了

因此,您还必须转义那些反斜杠:

let v1 = {
  s: "生病以后,爸爸\\_什么\\_酒\\_都\\_不\\_能喝了"
}

现在要达到预期效果,可以使用下一个替换regexp:

v1.s = v1.s.replace(/\\_/g, 'X');