JavaScript | 文字列を指定の区切り文字で分割(split メソッド)

JavaScript JavaScript
スポンサーリンク

初心者向けにやさしく、実例を交えて split の使い方を丁寧に説明します。コードはそのままブラウザの開発者ツール(Console)や Node.js で試せます。

split の「直感」

split は「ある文字(やパターン)で文字列を切って、切った断片を配列にする」ための道具です。
イメージ:"A,B,C".split(",")["A","B","C"]

書き方の基本

文字列.split(区切り文字[, 最大分割回数])
JavaScript
  • 区切り文字:文字列(例: ",")か正規表現(例: /\s+/)を指定できます。
  • 最大分割回数(オプション):配列に入れる要素数の上限を指定します。

よくある使い方(例と解説)

1) カンマで分割(基本)

const s = "apple,banana,grape";
console.log(s.split(",")); // ["apple", "banana", "grape"]
JavaScript

説明:, を見つけるたびに切って配列にする。

2) 先頭・末尾に区切り文字がある場合

const s = "/Jan/Feb/Mar/";
console.log(s.split("/"));
// ["", "Jan", "Feb", "Mar", ""]
JavaScript

説明:先頭や末尾の "/" の前後の文字列が空文字 "" として配列に入ります。必要なら後で削除できます。

削除方法の例(空要素を取り除く):

s.split("/").filter(Boolean); // ["Jan","Feb","Mar"]
JavaScript

3) 空文字 '' を区切りにすると「1文字ずつ」に分割

"abc".split("") // ["a","b","c"]
"".split("")    // []  (空文字列を空に分割すると空配列になる)
JavaScript

4) 区切りに正規表現を使う(複数の空白をまとめて分割)

const s = "apple   banana\tgrape\npear";
console.log(s.split(/\s+/)); // ["apple","banana","grape","pear"]
JavaScript

説明:/\s+/ は「連続する空白(スペース、タブ、改行など)」全体を1つの区切りとみなすので、余分な空白に強い。

5) 最大分割回数を使う

const s = "A..B..C..D";
console.log(s.split("..", 2)); // ["A","B"]
console.log(s.split(",", 0));  // []   (上限 0 は空配列)
JavaScript

説明:第2引数は「配列に入れる最大要素数」です。指定回数に達すると分割を止めます。

6) キャプチャ付きの正規表現(注意点)

正規表現で丸括弧 () を使ってキャプチャグループを作ると、その キャプチャした部分も配列に含まれる ことがあります:

const s = "a1b2c";
console.log(s.split(/(\d)/)); // ["a","1","b","2","c"]
JavaScript

説明:数字 \d をキャプチャしているので、数字そのものも結果に含まれます。不要ならキャプチャを使わない((?: ) の非キャプチャ)か、後でフィルタしてください。

よくある落とし穴(初心者が間違いやすいポイント)

  • 区切りを省略すると → 元の文字列が1要素の配列になります。
"abc".split() // ["abc"]
JavaScript
  • split('')split() は違う:前者は文字毎、後者は分割しない。
  • 先頭/末尾の区切りで空文字が生まれる → 必要なら .filter(Boolean) などで消す。
  • limit(上限)を 0 にすると空配列split(',',0)[])。
  • 正規表現のキャプチャに注意(上で説明)。

ちょっと実用的な例

例 A:CSV の行を簡単に分割して配列にする(簡易版)

const line = '1001,"Yamada, Taro",500';
const cols = line.split(',');
// ただしこの方法はダブルクォート内のカンマを正しく扱えない(簡易実装)
console.log(cols);
// ["1001", "\"Yamada", " Taro\"", "500"]
JavaScript

説明:CSV はダブルクォートで囲まれたフィールド内にカンマが入ることがあり、単純 split(',') では正しく処理できない。CSV の場合は専用パーサ(ライブラリ)か正規表現で慎重に扱う。

例 B:パス(”/” で区切られた)からファイル名だけ取り出す

const path = "/users/halu/documents/report.pdf";
const parts = path.split("/");
const filename = parts.pop();
console.log(filename); // "report.pdf"
JavaScript

例 C:文字列を分割して数値配列にする(数値に変換)

const s = "10,20,30";
const nums = s.split(",").map(x => Number(x));
console.log(nums); // [10, 20, 30]
JavaScript

練習問題

  1. "red|green|blue".split("|") の結果は?
  2. "/a/b/c/".split("/") の結果は? 空要素を削除した配列を作るにはどうする?
  3. "one two three".split(" ")"one two three".split(/\s+/) の違いは?

答え

  1. ["red","green","blue"]
  2. ["", "a", "b", "c", ""]...split("/").filter(Boolean)["a","b","c"] にできる。
  3. .split(" ") は単純にスペース一文字ごとに切るので空要素ができやすい。.split(/\s+/) は連続した空白をまとめて扱うので ["one","two","three"] になる。

まとめ(覚えておくと便利なポイント)

  • split は「区切りで切る」→ 結果は配列。
  • 区切りに正規表現が使える(強力)。
  • 先頭・末尾の区切りは空要素を生む → filter(Boolean) で除去することが多い。
  • CSV のような特殊な形式は単純 split では失敗する場合がある(ライブラリ推奨)。
  • split('') で1文字ごとの配列、split()(引数なし)は分割しない。
タイトルとURLをコピーしました