删除单引号字符转义

时间:2012-09-05 22:19:29

标签: javascript

我有一个像这样的字符串

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'

更新:这有点难以理解,但我的示例字符串在数组中就像。

> ["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
> 

3 个答案:

答案 0 :(得分:6)

您的测试字符串实际上都不包含反斜杠。您每次输入的字符串是:This is' it,因为反斜杠会转义单引号。

您的第一个(基于正则表达式)解决方案几乎是完美的,只是缺少全局修饰符/\\'/g来替换所有匹配,而不仅仅是第一个。要查看此操作,请尝试以下操作:

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

答案 1 :(得分: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

答案 2 :(得分:0)

我认为你问题中的第一个选项有效。当您在JavaScript中将其作为字符串提及时,您需要转义\,以便将其作为字符串而不是特殊字符读取。 检查这个jsFiddle:http://jsfiddle.net/T7Du4/2/