正規表現と反復
正規表現でマッチした部分について連続で何か処理を行うとき,今までは面倒だったからこんな風に書いていた。
str.replace(regexp, func);
置換後の文字列が生成されるなど,メモリと処理時間を無駄使いしてしまう書き方だ。楽だけど。
そこで,手軽さを保ちつつ資源を節約できるように,こんなメソッドを書いてみた。
String.prototype.forEach = function(regex, func) { var r; if(!regex.global) { if((r = regex.exec(this)) != null) func.apply(this, r); return; } while((r = regex.exec(this)) != null) { func.apply(this, r); } }
replaceを使うよりはマシなんじゃないかなと。名前は要検討。