Jquery-反斜杠字符

5

我在尝试替换字符串中的反斜杠字符时遇到了问题:

var g = myReadString;
g = g.replace("\", "\\\\");

出现了未识别字符的错误。

如何用四个\\\\替换简单的\呢?

非常感谢任何帮助,谢谢。

4个回答

9

\‍是转义序列的开始。如果您想要写出字面上的\‍,您需要编写另一个转义序列\\,它将被解释为单个的\‍。因此,如果您想用四个\\\\替换一个\‍,您需要编写以下内容:

g.replace("\\", "\\\\\\\\")

但是这只会替换第一个单一的\‍。要进行全局替换,需要使用带有全局匹配修饰符的正则表达式:

g.replace(/\\/g, "\\\\\\\\")

我认为OP实际上想要用四个字面意义的反斜杠替换一个反斜杠。 - jensgram

0

反斜杠也可以作为转义字符。您可以在此页面上找到字符列表... http://www.c-point.com/javascript_tutorial/special_characters.htm

因此,为了搜索或替换反斜杠,您必须转义反斜杠。我刚刚运行了您的代码,但它不起作用,因为反斜杠正在转义第一个引号。您究竟想做什么?如果您想将每个单个反斜杠替换为双反斜杠,则需要像这样的东西。

var g = myReadString;
g = g.replace("\\", "\\\\");

希望这能帮到你!


谢谢!好的,可行的解决方案是: g = g.replace("\", "\\\\"); - Samuel Beckett
没问题!很高兴能帮忙。 - mikesir87

0
g = g.replace(/\\/g, "\\\\");

我认为这就是你要找的。如果不是,请告诉我。


你好,我的朋友,它不起作用。它无法替换字符。 例如,我希望: IN:“myvalue \ assa”(1个反斜杠) OUT:“myvalue \\ assa” - Samuel Beckett
@Samuel Beckett 在这种情况下,您实际上必须使用八个(!)反斜杠进行替换(即四个转义反斜杠)。 - jensgram

0

通常情况下,请确保始终正确转义。

在您为replace()提供的第一个参数中,您打算传递一个包含\的字符串,但最终变成了",(引号-逗号-空格)!这是因为您实际上是在转义字符串的“结束”引号:

g = g.replace("\", "\\\\");
              ^    ^
              s    e
              t    n
              a    d
              r
              t

现在第一个参数是字符串引号-逗号-空格。其余部分会导致语法错误!

你想要的是:

g = g.replace("\\", "\\\\\\\\");
              ^  ^  ^        ^
              s  e  s        e
              t  n  t        n
              a  d  a        d
              r     r
              t     t

第一个参数:字符串\
第二个参数:字符串\\\\


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接