そして出来る限り速い書き方を知りたい。
'1/2/3/4/5'って文字列の中に、'/'が何回出てきたかを取る例。
案1: 愚直にsplit
'1/2/3/4/5'.split(/\//gm).length - 1;
splitして、端っこいらないのでマイナス1するパターン。
案2: String#match
'1/2/3/4/5'.match(/\//gm).length;
こっちのが王道っぽい。
結果
上記の例でも、案2: String#matchの方が速かった。
どれくらい速かったかというと、手元のChrome 48.0.2564.23 beta (64-bit)だとこんな具合。
console.time('split') for (var i = 0; i < 100000; i++){ '1/2/3/4/5'.split(/\//gm).length - 1 } console.timeEnd('split') console.time('match') for (var i = 0; i < 100000; i++){ '1/2/3/4/5'.match(/\//gm).length; } console.timeEnd('match') // VM12016:5 split: 201.295ms // VM12016:11 match: 124.047ms
FireFoxでもSafariでも、matchのパターンのが速かった。
ご参考まで。