2010-12-01 106 views
3

我有试图从字符串替换反斜杠字符一个问题:Jquery-反斜杠字符

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

它给未识别的字符的错误。

如何用简单的\替换为四个\\\\

我将不胜感激, 谢谢。 Pandy

回答

7

\‍是转义序列的开始。如果您的字面意思是写\‍,则您需要编写\\这也是一个转义序列,并且将被解释为单个\‍。所以,如果你想四\\\\更换一次\‍,你需要这样写:

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

但这只会更换单个\‍的第一次出现。要做到全局替换,你需要使用正则表达式与全球匹配修饰符:

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

我觉得OP实际上希望与*四个*文字反斜杠替代一个反斜杠。 – jensgram 2010-12-01 13:43:32

+0

@jensgram:我认为你是对的。 – Gumbo 2010-12-01 13:50:44

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

我想这就是你要找的内容。如果不是,请告诉我。

+0

你好我的朋友,它不起作用。它不会取代角色。例如,我想: IN:“myvalue \ assa”(1个反斜杠) OUT:“myvalue \\\\ assa” – 2010-12-01 13:37:33

0

反斜杠也可以作为逃避角色。你可以在这个页面找到一个字符列表... http://www.c-point.com/javascript_tutorial/special_characters.htm

所以,为了搜索或替换反斜杠,你必须避开反斜线。我实际上只是运行你的代码,并且它不起作用,因为反斜杠正在逃避第一个报价。你究竟想要做什么?如果你想用双精度来替换每一个反斜杠,你需要这样的东西。

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

希望有所帮助!

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 

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