この記事は翻訳作業中です。

split() メソッドは、文字列を複数の部分文字列に区切ることによりString オブジェクトを文字列の配列に分割します、using a specified separator string to determine where to make each split.

構文

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

Attention: If an empty string ("") is used as the separator, the string is not split between each user-perceived character (grapheme cluster) or between each unicode character (codepoint) but between each UTF-16 codeunit. This destroys surrogate pairs. See also How do you get a string to a character array in JavaScript? on stackoverflow.

引数

separator Optional
文字列を区切ることに使用するための文字を指定します。separator は文字列、もしくは正規表現として扱われます。If a plain-text separator contains more than one character, that entire string must be found to represent a split point. separator が省略された場合、返る配列は文字列全体から成る 1 つの要素を含みます。separator が空文字の場合、str は文字の配列に変換されます。
limit Optional
見つかった分割結果の数の制限を指定する整数です。split() メソッドは、分割した項目数が limit に一致するか、文字列が separator に不足するまで、すべての separator のマッチを分割します。It may still contain fewer entries than limit if the end of the string is reached before the specified limit is reached. The left-over text is not returned in the new array.

戻り値

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

詳細

split メソッドが新しい配列を文字列から取り出すとき、separator は文字列から削除され、部分文字列から成る配列が返ります。separator が省略された場合、その配列は 文字列全体から成る 1 つの要素を含みます。If separator appears at the beginning or end of the string, or both, the array begins, ends, or both begins and ends, respectively, with an empty string. Thus, if the string consists solely of one instance of separator, the array consists of two empty strings.

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

註: if separator is an array, then Array is coerced to String and used as separator.

註: 文字列が空であるとき、split メソッドは、空の配列ではなく、1 つの空文字列を含む配列を返します。If the string and separator are both empty strings, an empty array is returned.

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", "." ]

Splitting with an array as separator

var myString = 'this|is|a|Test';
var splits = myString.split(['|']);

console.log(splits); //["this", "is", "a", "Test"]

var myString = 'ca,bc,a,bca,bca,bc';

var splits = myString.split(['a','b']); 
// myString.split(['a','b']) is same as myString.split(String(['a','b'])) 

console.log(splits);  //["c", "c,", "c", "c", "c"]

split() を使って文字列を反転させる

This is not a robust way to reverse a string:

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

It doesn't work if the string contains grapheme clusters, even when using a unicode aware split (use 例えば、 esrever instead).

var str = 'résumé';
var strReverse = str.split(/(?:)/u).reverse().join('');
// => "́emuśer"

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

仕様

仕様 ステータス コメント
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 Latest Draft (ECMA-262)
String.prototype.split の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連項目

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

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