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ライク。