Javascript 和反斜杠替换

IT技术 javascript replace backslash
2021-01-18 12:38:43

这是我的字符串:

var str = "This is my \string";

这是我的代码:

var replaced = str.replace("/\\/", "\\\\");

我不能让我的输出是:

"This is my \\string"

我已经尝试了我能想到的正则表达式和替换值的所有组合。

任何帮助表示赞赏!

6个回答

多年来一直被这个问题难住了,所有的答案都坚持认为源字符串需要已经在其中转义了反斜杠……情况并非总是如此。

做这个 ..

var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));
@TimarIvoBatis,我刚刚看到你的这条评论,你需要避开反斜杠。stackoverflow.com/questions/8351547/...
2021-03-21 12:38:43
我不明白为什么,但这对我不起作用。这是一个 jsfiddle,关心帮助。jsfiddle.net/a2nsL4bv
2021-03-23 12:38:43
不知道为什么这有 49 个赞成票。这些String.fromCharCode电话是不必要的。问题中的问题是字符串文字 "This is my \string"包含反斜杠。您无法替换开始时不在字符串中的内容。字符串变量str 可能包含反斜杠,然后可以简单地替换为str.replace(/\\/g, "\\\\"), 或str.replaceAll("\\", "\\\\")但是如果你没有正确地开始你的文字(如问题中所写),这个答案将无济于事。
2021-03-23 12:38:43

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

var str = "This is my \\string";

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

var replaced = str.replace(/\\/, "\\\\");
var替换 = str.replace(/\\/g, "\\\\"); 不是说 /g 全局标志是必需的,但是如果您想替换反斜杠的每个实例,这就是您要做的。
2021-03-17 12:38:43
在 sqllite 中我可以很好地保存 JSON.stringfy() 以删除反斜杠。谢谢
2021-04-09 12:38:43

问题是您的第一行中的 \ 甚至无法识别。它认为反斜杠将标记转义序列,但 \s 不是转义字符,因此被忽略。您的 var str 被解释为只是“这是我的字符串”。尝试str.indexOf("\\")- 你会发现它是 -1,因为根本没有反斜杠。如果您控制 str 的内容,请按照 David 所说的去做 - 添加另一个 \ 以转义第一个。

同意 - 转义序列可以进入字符串的唯一方法是该字符串是在 javascript 中构造的。如果它来自表单字段、ajax 响应、查询字符串等,则不需要转义。当您说“字符串是作为...提供给我的”时 - 它实际上是如何提供给您的?
2021-03-17 12:38:43
要么你的 JS 损坏了(在这种情况下你无法修复它),要么你得到一个其他语言的字符串并将它输出到 JS 而不先转义特殊字符,在这种情况下你必须在那里修复它。
2021-03-19 12:38:43
问题是我无法控制value。它实际上是我正在处理的 Windows 路径( \wp-content\photos\image123.jpg )。该字符串以“\wp-content\photos\image123.jpg”的形式提供给我,但我无法对它做任何事情,因为反斜杠消失了。我知道它们被解析为转义字符,但我不知道如何解决。
2021-03-22 12:38:43
@Tesserex 我尝试了 str.indexOf("\\"),我得到了一个 json-string,它嵌套了一个带有反斜杠的 json-string。真的很烂...
2021-04-02 12:38:43

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

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