replaceメソッドについて
replaceの第2引数に関数を持ってきたときの動作とか,正規表現のグルーピングによる後方参照とか。
String.prototype.escapeHTML = function(){ return this.replace(/(&)|(")|(<)|(>)/g,function($0,$1,$2,$3,$4){ if($1) return "&"; else if($2) return """; else if($3) return "<"; else return ">"; }); }
なんてものを書いてみたけど,escapeHTML の実装 3 パターン (ベンチマーク付き) - (new Hatena).blog()の2つめのがエレガントだなぁとおもった。