String.prototype.split()

split() メソッドは、文字列を複数の部分文字列に区切ることによりString オブジェクトを文字列の配列に分割します。

構文

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

引数

separator
任意。文字列を区切ることに使用するための文字を指定します。separator は文字列、もしくは regular expression として扱われます。separator が省略された場合、返る配列は文字列全体から成る 1 つの要素を含みます。separator が空文字の場合、str は文字の配列に変換されます。
limit
任意。見つかった分割結果の数の制限を指定する整数です。split() メソッドは、分割した項目数が limit に一致するか、 文字列が separator に不足するまで、すべての separator のマッチを分割します。

戻り値

与えられた文字列で separator が発生するそれぞれのポイントで分割した文字列配列。

詳細

split メソッドが新しい配列を文字列から取り出すとき、separator は文字列から削除され、部分文字列から成る配列が返ります。separator が省略された場合、その配列は 文字列全体から成る 1 つの要素を含みます。

separator が、キャプチャする括弧を含む正規表現だった場合、マッチしたキャプチャする括弧の結果(任意の undefined となった結果を含む)である各回の区切りが出力配列に結合されます。

注: 文字列が空であるとき、split メソッドは、空の配列ではなく、1 つの空文字列を含む配列を返します。

例: split メソッドの使用

以下の例は、指定された区切りを使って、文字列を文字列の配列に分割する関数を定義します。文字列を分割した後、その関数は元の文字列(分割する前)、使用した区切り、配列中の要素の数、そして、個々の配列要素を示すメッセージを表示します。

function splitString (stringToSplit,separator) {
 var arrayOfStrings = stringToSplit.split(separator);

 console.log('元の文字列: "' + stringToSplit + '"');
 console.log('区切り: "' + separator + '"');
 console.log("配列は " + arrayOfStrings.length + " 要素: ");

 for (var i = 0; i < arrayOfStrings.length; i++) {
   print(arrayOfStrings[i] + " / ");
 }
}

var tempestString = "Oh brave new world that has such people in it.";
var monthString = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";

var space = " ";
var comma = ",";

splitString(tempestString,space);
splitString(tempestString);
splitString(monthString,comma);

これは次のように出力されます。

元の文字列: "Oh brave new world that has such people in it."
区切り: " "
配列は 10 要素: Oh / brave / new / world / that / has / such / people / in / it. /

元の文字列: "Oh brave new world that has such people in it."
区切り: "undefined"
配列は 1 要素: Oh brave new world that has such people in it. /

元の文字列: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
区切り: ","
配列は 12 要素: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec /

例: 文字列からの空白の削除

以下の例では、split メソッドは、 0 回以上の空白とそれに続くセミコロン、それにさらに続く 0 回以上の空白を探し、それらが見つかったとき、文字列から空白を削除します。nameList は、split メソッドの結果として返された配列です。

var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";

console.log(names);

var re = /\s*;\s*/;
var nameList = names.split (re);

console.log(nameList);

これは 2 つの行を出力します。 1 行目は元の文字列を出力し、 2 行目は split メソッドの実行結果の配列を出力します。

Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
Harry Trump,Fred Barney,Helen Rigby,Bill Abel,Chris Hand

例: 限られた数の分割結果を返す

以下の例では、split メソッドは 文字列中の 0 回以上の空白を探し、見つかった最初の 3 つの分割結果を返します。

var myString = "Hello World. How are you doing?";
var splits = myString.split(" ", 3);

console.log(splits);

このスクリプトは以下の例を出力します。

Hello, World., How

例:キャプチャする括弧

separator がキャプチャする括弧を含む場合、マッチした結果が戻り値の配列に含まれます。

var myString = "Hello 1 word. Sentence number 2.";
var splits = myString.split(/(\d)/);

console.log(splits);

このスクリプトは、以下を表示します。

Hello , 1,  word. Sentence number , 2, .

例:split() を使用して文字列を反転させる

var str = 'asdfghjkl';
var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
// split() returns an array on which reverse() and join() can be applied

ボーナス: オリジナルの文字列が回分の場合、テストのために === 演算子を使用します。

仕様

仕様 ステータス コメント
ECMAScript 3rd Edition (ECMA-262) 標準 初期定義。JavaScript 1.1 で実装。
ECMAScript 5.1 (ECMA-262)
String.prototype.split の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.split の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
String.prototype.split の定義
ドラフト  

ブラウザー実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, kkas, teoli, ethertank, Potappo, Mgjbot, Shoot
 最終更新者: YuichiNukiyama,