0

このコードが特殊文字の置換に失敗するのはなぜですか:

http://jsfiddle.net/TTfzu/26/

var strOutput = 'aaa { " } '; 

strOutput.replace(/{/g, "");
strOutput.replace(/}/g, "");
strOutput.replace(/"/g, "");

document.write( strOutput );

何を変更する必要がありますか?

4

3 に答える 3

4

replace引数を変更せず、新しい文字列を返します。結果をどこかに割り当てる必要があります。そうしないと失われます。

var strOutput = 'aaa { " } '; 

strOutput = strOutput.replace(/{/g, "");
strOutput = strOutput.replace(/}/g, "");
strOutput = strOutput.replace(/"/g, "");

document.write( strOutput );

[...]または、正規表現で文字クラスを使用するだけです:

var strOutput = 'aaa { " } '; 
strOutput = strOutput.replace(/[{}"]/g, "");
于 2012-10-18T10:27:08.760 に答える
3

置換の結果をキャッチする必要があります。(そして、置換を連鎖させることができます。)

var strOutput = 'aaa { " } '; 

strOutput = strOutput.replace(/{/g, "").replace(/}/g, "").replace(/"/g, "");

document.write( strOutput );

ところで、次のように簡単にすることができます:

strOutput = strOutput..replace(/({|"|})/g, "");

@Alnitak コメントの時点で:

strOutput = strOutput..replace(/[{}"]/g, "");
于 2012-10-18T10:26:36.517 に答える
1

他の回答によると、の結果を使用する必要があります.replace

ただし、3 つの呼び出しは必要ありません。次を使用する必要があります。

strOutput = strOutput.replace(/[{}"]/g, '');

ここで、[...]は、そのセット内の個々の文字に一致する文字クラスです。そのようなクラス内でエスケープする必要がある唯一の文字は^-]\

于 2012-10-18T10:29:07.260 に答える