这是我的字符串:
var str = "This is my \string";
这是我的代码:
var replaced = str.replace("/\\/", "\\\\");
我不能让我的输出是:
"This is my \\string"
我已经尝试了我能想到的正则表达式和替换值的所有组合。
任何帮助表示赞赏!
这是我的字符串:
var str = "This is my \string";
这是我的代码:
var replaced = str.replace("/\\/", "\\\\");
我不能让我的输出是:
"This is my \\string"
我已经尝试了我能想到的正则表达式和替换值的所有组合。
任何帮助表示赞赏!
多年来一直被这个问题难住了,所有的答案都坚持认为源字符串需要已经在其中转义了反斜杠……情况并非总是如此。
做这个 ..
var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));
该字符串不包含反斜杠,它包含\s
转义序列。
var str = "This is my \\string";
如果你想要一个正则表达式,你应该有一个正则表达式,而不是一个字符串。
var replaced = str.replace(/\\/, "\\\\");
问题是您的第一行中的 \ 甚至无法识别。它认为反斜杠将标记转义序列,但 \s 不是转义字符,因此被忽略。您的 var str 被解释为只是“这是我的字符串”。尝试str.indexOf("\\")
- 你会发现它是 -1,因为根本没有反斜杠。如果您控制 str 的内容,请按照 David 所说的去做 - 添加另一个 \ 以转义第一个。
如果您有多个实例或反斜杠:
str.split(String.fromCharCode(92)).join(String.fromCharCode(92,92))
var a = String.raw`This is my \string`.replace(/\\/g,"\\\\");
console.log(a);
结果:
This is my \\string