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 に答える