Open1

String.spiit() のアドバンスドな使い方 (正規表現)

鷹勇鷹勇

String.split() のインターフェイス

str.split([separator[, limit]])

今回は separator に正規表現を与えた場合のケースに発見があった。

知ってた使い方

const myString = 'a,b,c'
const splits = myString.split(",")

console.log(splits) // => ["a","b","c"]

当然かもしれないが、 separator に指定した ','splits の 要素に含まれない。
しかし、separator を含んで分割をしたいというケースもある。
それが以下で記述する解決手段だ。

初めて知った正規表現を使うケース

const myString = 'Hello 1 word. Sentence number 2.'
const splits = myString.split(/(\d)/)

console.log(splits) // => [ "Hello ", "1", " word. Sentence number ", "2", "." ]

正規表現において(...) はグループ化と呼ばれる記法だが、これを用いてstr.split()をつかうと、separator を含んだ(今回だと数字)配列を得れる。
やや直感的ではない挙動だが、便利な結果を得れる。

ちなみにグループ化をしないと 結果は以下だ。上記セクションと似たような挙動となる

const myString = 'Hello 1 word. Sentence number 2.'
const splits = myString.split(/\d/)

console.log(splits) // => ['Hello ', ' word. Sentence number ', '.']

参考

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split#regexp_で分割して結果に区切り文字列の一部を含める