我有一个像这样的字符串
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
>
答案 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;
});
答案 2 :(得分:0)
我认为你问题中的第一个选项有效。当您在JavaScript中将其作为字符串提及时,您需要转义\
,以便将其作为字符串而不是特殊字符读取。
检查这个jsFiddle:http://jsfiddle.net/T7Du4/2/