TOTAL ACCESS 無料カウンター  UNIQUE ACCESS 無料カウンター

2008年9月10日水曜日

Javascriptのreplace

Javascriptの文字列置換、replaceがちょっと奇妙だったのでメモ。
正規表現を使わない単純な文字の置換はJavascriptだとreplaceメソッド、PHPだとstr_rplaceとなります。例として
"This,is,a,pen."を"This is a pen."にしてみます。要するに","を" "へ置き換えるだけ。で、まずPHPで書いた場合は以下。
------
<?php
$msg = "This,is,a,pen.";
$result = str_replace(",", " ", $msg);
print $result;
?>
結果:This is a pen.
------
まぁそれがどうしたとしか言いようがないですが、このように書きます。同じノリでJavascriptで書いてみましょう
------
<script>
var msg = "This,is,a,pen.";
var result = msg.replace(","," ");
document.write(result);
</script>
結果:This is,a,pen.
------
PHPと同じようなノリで書くと、Javascriptだと1つ目しか置換されていないのがわかりますね。この辺がちょっと奇妙というかいまさらながら意外でした。では全部書き換えるにはどうすればいいかというと

var result = msg.replace(',',' ','g');

という風に第3引数に'g'を足せば全部置換されるようです。なんだろうこの裏技というか隠し技?たしかパターン文字列を正規表現オブジェクトにしなければ単なる文字列置換だったはずなのですが、なにやら正規表現チックですね・・・お前はsedかと。
------
<script>
var msg = "This,is,a,pen.";
var result = msg.replace(","," ","g");
document.write(result);
</script>
結果:This is a pen.
------
めでたしめでたし。