Javascript和反斜杠替换

Fra*_*kie 36 javascript replace backslash

这是我的字符串:

var str = "This is my \string";
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

var replaced = str.replace("/\\/", "\\\\");
Run Code Online (Sandbox Code Playgroud)

我无法得到我的输出:

"This is my \\string"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的正则表达式和替换值的每个组合.

任何帮助表示赞赏!

小智 42

多年来一直难以理解,并且所有答案一直坚持要求源字符串已经在其中转义了反斜杠......但情况并非总是如此.

做这个 ..

var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么,但这对我不起作用。这是一个jsfiddle,乐于助人。https://jsfiddle.net/a2nsL4bv/ (2认同)
  • 不知道为什么这有 49 票赞成。`String.fromCharCode` 调用是不必要的。问题中的问题是字符串 _literal_ `"This is my \string"` 包含 _zero_ 反斜杠。您无法替换字符串中不存在的内容。字符串变量“str”可能包含反斜杠,然后可以简单地替换它们,例如“str.replace(/\\/g, "\\\\")”或“str.replaceAll("\\", "\\” \\")`。但是,如果您一开始就没有正确地获取文字(如问题中所写),那么这个答案将无济于事。 (2认同)

Que*_*tin 34

该字符串不包含反斜杠,它包含\s转义序列.

var str = "This is my \\string";
Run Code Online (Sandbox Code Playgroud)

如果你想要一个正则表达式,你应该有一个正则表达式,而不是一个字符串.

var replaced = str.replace(/\\/, "\\\\");
Run Code Online (Sandbox Code Playgroud)

  • var replacement = str.replace(/ \\/g,"\\\\"); 不要/ g全局标志是必要的,但是如果你想要替换反斜杠的每个实例,那么你就是这样做的. (5认同)

Tes*_*rex 9

问题是你的第一行中的\甚至都没有被识别出来.它认为反斜杠将标记一个转义序列,但\ s不是转义字符,所以它被忽略了.你的var str被解释为"这是我的字符串".尝试str.indexOf("\\")- 你会发现它是-1,因为根本没有反斜杠.如果您控制str的内容,请执行大卫所说的内容 - 添加另一个\以逃避第一个.


小智 8

var a = String.raw`This is my \string`.replace(/\\/g,"\\\\");
console.log(a);
Run Code Online (Sandbox Code Playgroud)

结果:

This is my \\string
Run Code Online (Sandbox Code Playgroud)


use*_*415 5

如果您有多个实例或反斜杠:

str.split(String.fromCharCode(92)).join(String.fromCharCode(92,92))
Run Code Online (Sandbox Code Playgroud)