首先要明确,一个字符串的内容是 "a\b\c\d" 和它的描述是 "a\b\c\d" 是不同的。根据 JS 的转义规则,字符串内容 "a\b\c\d"
的描述是 ""a\\b\\c\\d""。
如果想把内容 "a\b\c\d" 修改为 "a\\b\\c\\d",那对应的描述应该改为 ""a\\\\b\\\\c\\\\d"",因为 "\\" 会转义成
"\"。所以 4 个 "\" 会转义成 2 个 "\"。
为了避免内容和描述的混淆,在代码中生成 ""a\\b\\c\\d"" 所描述的字符串,可以用 "[..."abcd"].join("\\")"(当然直接写成
""a\\b\\c\\d"" 也是一样的)。
而在 replace 的时候,"/\\/" 和 ""\\"" 描述的都是单个反斜线字符。要想替换成两个反斜线字符需要 ""\\\\""。
另外,如果是为了处理成 JSON,建议直接用 JSON.stringify 来处理
"snipaste_2024-01-08_14-03-25.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/f85af08d9696fd71db6774b84825d9b3.png)