【发布时间】:2011-05-18 12:09:11
【问题描述】:
我在尝试替换字符串中的反斜杠时遇到问题:
var g = myReadString;
g = g.replace("\", "\\\\");
它给出了无法识别字符的错误。
一个简单的\怎么能换成四个\\\\?
如果有任何帮助,我将不胜感激, 谢谢。 潘迪
【问题讨论】:
标签: javascript replace escaping
我在尝试替换字符串中的反斜杠时遇到问题:
var g = myReadString;
g = g.replace("\", "\\\\");
它给出了无法识别字符的错误。
一个简单的\怎么能换成四个\\\\?
如果有任何帮助,我将不胜感激, 谢谢。 潘迪
【问题讨论】:
标签: javascript replace escaping
\ 是转义序列的开始。如果您打算按字面意思写\,则需要写\\,这也是一个转义序列,将被解释为单个\。所以如果你想用四个\\\\替换一个\,你需要这样写:
g.replace("\\", "\\\\\\\\")
但这只会替换第一次出现的单个\。要进行全局替换,您需要使用带有全局匹配修饰符的正则表达式:
g.replace(/\\/g, "\\\\\\\\")
【讨论】:
g = g.replace(/\\/g, "\\\\");
我认为这就是您正在寻找的。如果没有,请告诉我。
【讨论】:
反斜杠也用作转义字符。您可以在此页面上找到字符列表...http://www.c-point.com/javascript_tutorial/special_characters.htm
因此,为了搜索或替换反斜杠,您必须对反斜杠进行转义。我实际上只是运行了您的代码,但它不起作用,因为反斜杠正在转义第一个引号。你到底想做什么?如果你想用一个双反斜杠替换每个单反斜杠,你需要这样的东西。
var g = myReadString;
g = g.replace("\\", "\\\\");
希望有帮助!
【讨论】:
在一般中确保始终正确转义。
在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
第一个参数:字符串\
第二个参数:字符串\\\\
【讨论】: