JavaScript 逆引き集 | split で文字列分割

JavaScript JavaScript
スポンサーリンク
スポンサーリンク

split は「文字列を区切り文字でバラして配列にするハサミ」

'a,b'.split(',') は、文字列を「区切り文字」で切り分けて、配列に変換するメソッドです。 天才プログラマー視点で言うと、join の逆の動きをするのが split です。

join が「配列 → 文字列」なら、 split は「文字列 → 配列」。 このペアを理解すると、一気に世界が分かりやすくなります。

基本イメージ:カンマ区切りの文字列を配列にする

一番シンプルな例からいきます。

const s = "Aki,Mika,Ken";
const arr = s.split(',');

console.log(arr); // ["Aki", "Mika", "Ken"]
JavaScript

ここで起きていることは、 文字列 "Aki,Mika,Ken" を、カンマ ',' を見つけるたびに切り分けて、 それぞれを配列の要素として並べている、という動きです。

つまり、 「区切り文字を境目にして、文字列をバラして配列にする」 それが split の本質です。

区切り文字を変えると意味が変わる

split の第一引数は、「どこで切るか」を決めるためのものです。

const s = "Aki / Mika / Ken";

console.log(s.split(' / ')); // ["Aki", "Mika", "Ken"]
console.log(s.split(' '));   // ["Aki", "/", "Mika", "/", "Ken"]
JavaScript

' / ' を区切りにすると「名前だけ」が取れます。 ' '(スペース)を区切りにすると、「名前」と「/」がバラバラに取れます。

「どこを境目にしたいか」を、区切り文字で正確に指定することが大事です。

空文字で split すると「1文字ずつの配列」になる

ちょっと変わった使い方ですが、区切り文字に空文字 '' を渡すと、 文字列を 1 文字ずつに分解できます。

const s = "ABC";
console.log(s.split('')); // ["A", "B", "C"]
JavaScript

これは、「文字列を1文字単位で処理したい」ときに使えます。 ただし、普段はあまり多用しないので、「こういうこともできる」程度で覚えておけば十分です。

例題:CSV の1行を配列にする

split は、CSV っぽい文字列を配列に変換するときにもよく使われます。

const line = "1,Aki,80";
const cols = line.split(',');

console.log(cols); // ["1", "Aki", "80"]
JavaScript

ここでは、 「カンマ区切りの1行」を「列の配列」に変換しています。

このあと、cols[0] を id、cols[1] を name、cols[2] を score として扱う、 というような処理につなげていけます。

join と split の関係を深掘りする(ここが重要)

joinsplit は、セットで理解すると一気に腑に落ちます。

const arr = ["Aki", "Mika", "Ken"];
const s = arr.join(',');
const back = s.split(',');

console.log(s);    // "Aki,Mika,Ken"
console.log(back); // ["Aki", "Mika", "Ken"]
JavaScript

「配列 → 文字列」にしたものを、 「文字列 → 配列」に戻しているわけです。

この往復ができると、 「表示用には文字列、内部処理には配列」という切り替えが自然にできるようになります。

split の細かい挙動:区切り文字がない場合と連続する場合

区切り文字が含まれていない場合。

console.log("Aki".split(',')); // ["Aki"]
JavaScript

切る場所がないので、元の文字列がそのまま1要素の配列になります。

区切り文字が連続している場合。

console.log("Aki,,Ken".split(',')); // ["Aki", "", "Ken"]
JavaScript

間に何もない部分は、空文字 "" として配列に入ります。 この挙動は、入力データの欠損を検出するときなどに役立ちます。

まとめ:split は「文字列を配列に戻すための基本ハサミ」

'a,b'.split(',') を使いこなせると、 文字列を「意味のあるかたまり」に分解して扱うことが簡単になります。

区切り文字を境目にして文字列をバラす。 結果は配列になるので、そのままループや配列メソッドで処理できる。 join と組み合わせると、「配列 ↔ 文字列」の往復が自然に書ける。

「この文字列、区切りごとに分けて配列として扱いたい」と感じた瞬間に、 まず split を思い出せるようになること。

それが、文字列と配列を自在に行き来できるようになるための、大事な一歩です。

タイトルとURLをコピーしました