2012-09-05 54 views
1

我有这样删除单引号字符转义

This is\' it 

字符串我想它看起来像这样

This is' it 

没有我似乎工作

> "This is\' it".replace(/\\'/,"'"); 
'This is\' it' 
> "This is\' it".replace("'",/\\'/); 
'This is/\\\\\'/ it' 
> "This is\' it".replace("\'","'"); 
'This is\' it' 
> "This is\' it".replace("'","\'"); 
'This is\' it' 

UPDATE :这是有点难以包裹我的头,但我有我的例子字符串内的数组类似。

> ["hello world's"] 
[ 'hello world\'s' ] 

它会自动发生,像这样:

> var a = ["hello world's"] 
undefined 
> a 
[ 'hello world\'s' ] 
> a[0] 
'hello world\'s' 
> console.log(a[0]) 
hello world's 
undefined 
> console.log(a) 
[ 'hello world\'s' ] 
undefined 
> 
+6

'console.log(“This is \'it”)'''This is'it' for me。 – Blender

回答

6

无测试串两者实际上包含反斜线。每次你输入的字符串是:This is' it因为反斜杠转义单引号。

你的第一个(基于正则表达式 - )解决方案几乎是完美的,只是缺少全球改性剂/\\'/g更换所有的比赛,不只是第一个。要看到这一行动,请尝试以下操作:

> "This is\\' it" 
"This is\' it" 
> "This is\\' it".replace(/\\'/g,"'"); 
"This is' it" 
+0

' “这是\\”它” .replace(/ \\ '/ G“,'”);''返回 '这是\' it''。我的字符串实际上来自JSON并且是''这是\'it''。 – ThomasReggi

+0

如果是JSON字符串,那么就应该自动只是通过解析JSON转义。 '“这是\” it''是一个单引号字符串里面单引号,反斜杠“消失”时,读取的字符串。 –

+0

是的你是对的,我更新了我的问题,现在一切都变得有意义了。 – ThomasReggi

0

给这一个镜头:

"This is\' it".replace(/\\(.?)/g, function (s, n1) { 
    switch (n1) { 
    case '\\': 
     return '\\'; 
    case '0': 
     return '\u0000'; 
    case '': 
     return ''; 
    default: 
     return n1; 
    }); 

http://phpjs.org/functions/stripslashes:537

0

我认为您的问题的第一个选项有效。当你提到它在JavaScript字符串,你需要躲避\使得它解读为一个字符串,而不是一个特殊字符。 检查此jsFiddle:http://jsfiddle.net/T7Du4/2/