Rhinoで覚えるJavaScriptの読み書き。その2

置換

js> 'hoge'.replace('ho','aa');
aage
js> 'hoge'.replace(/h./, 'aa')
aage

RubyのString#sub相当。最初に一致した文字列が置換される。

js> 'hogehoge'.replace(/ho/g, 'HO');
HOgeHOge

String#gsub相当、一致する文字列を全て置換するメソッドは無いので正規表現のgオプションを使う。

js> 'hogeAAAhoge'.replace(/hoge(.*?)hoge/,"$1")
AAA
js> 'hogeAAAhogeBBBhoge'.replace(/hoge(.*?)hoge(.*?)hoge/, "$1 $2")
AAA BBB

正規表現メモリは$nで呼び出す。先頭から順に$1、$2……。

文字列分解

js> 'AtestBtestCtestD'.split('test')
A,B,C,D

String.split(デリミタ);。デリミタで文字列を分割して、配列に格納した物が帰る。Rubyと同じかな。

js> 'AtestBtestC'.split(/(test)/);
A,test,B,test,C

デリミタに正規表現も使える。丸括弧を使うと、各要素に一致したのもそれぞれ分解して配列に格納される。

each

js> a
A,B,C,D
js> for(var i in a){print(i)}
0
1
2
3

カウンタ変数にはインデックスが入る。each_indexライク。