2

我有一个这样的字符串

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
> 
4

3 回答 3

7

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

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

> "This is\\' it"
"This is\' it"
> "This is\\' it".replace(/\\'/g,"'");
"This is' it"
于 2012-09-05T22:23:23.290 回答
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

于 2012-09-05T22:22:42.423 回答
0

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

于 2012-09-05T22:28:59.320 回答