JavaScript

String.prototype.split()メソッド

 編集:2022.08.01 by T.A.

その文字列を、指定した区切り文字列で分割したものを配列として返します。

構文
array= String.split( [separator[, limit]] )
String String。
separator 省略可。分割を行うところにある文字列です。文字列または正規表現を指定することができます。

separator が複数の文字を含んだ文字列である場合、分割にはその文字列の並び全体が見つかることが必要です。

separator が省略されたり str の中に現れなかったりした場合は、返却される配列には文字列全体から成る要素が1つだけ含まれます。

separator が文字列の先頭または末尾、またはその両方に現れた場合、配列の先頭、末尾、または先頭と末尾の両方が、それぞれ空文字列になります。

separator が空文字列("")の場合、str は個々の UTF-16 「文字」の配列になります。

警告: 空文字列("")を区切り文字列として使用すると、文字列がユーザーが知覚可能な文字(書記素クラスター)に分割されるわけではなく、Unicode 文字(コード ポイント)、ただし UTF-16 コード単位です。これはサロゲート ペアを破壊します。StackOverflow の“How do you get a string to a character array in JavaScript?”を参照してください。

limit 省略可省略可。非負の整数で、分割する数を制限します。

指定された場合、文字列は separator が現れるたびに分割されますが、limit の数の項目が配列に配置されると停止します。残りのテキストは配列に入りません。

  • 制限数に達する以前に文字列の末尾に達した場合は、配列の要素が limit よりも少なくなることがあります。
  • limit が 0 の場合は、分割は行われません。
戻り値

文字列の Array。指定された文字列で separator が現れるたびに分割されたものです。

解説

separator は見つかると文字列から削除され、部分文字列が配列に入って返されます。

separator が、キャプチャする括弧を含む正規表現だった場合、separator が一致するごとに、キャプチャーする括弧の結果が(未定義の結果であった場合を含め)出力配列に追加されます。

separator が配列であった場合、その配列が String に変換された上で区切り文字列として使用されます。

文字列が空の場合、split() は空の配列ではなく、1つの空文字列を含む配列を返します。文字列と区切り文字列が共に空文字列の場合、空の配列が返ります:

const myString='';
D=myString.split(); //=[""]

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

Str='Oh brave new world that has such people in it.';
D=Str.split(" "); //=["Oh", "brave", "new", "world", "that", "has", "such", "people", "in", "it."]

Str='Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec';
D=Str.split(","); //=["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
文字列からの空白の削除

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

const names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
const re = /\s*(?:;|$)\s*/;
D=names.split(re); //=["Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", ""]
限られた数の分割結果を返す

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

const myString = 'Hello World. How are you doing?';
D=myString.split(' ', 3); //=["Hello", "World.", "How"]
RegExp で分割して結果に区切り文字列の一部を含める

separator がキャプチャーの括弧「()」 を含む正規表現である場合、一致した結果が配列に含まれます:

const myString='Hello 1 word. Sentence number 2.';
D=myString.split(/(\d)/); //=["Hello ", "1", " word. Sentence number ", "2", "."]

メモ: 正規表現の \d は文字クラスで、0から9の数字に一致します。

文字列の並びを反転する

この手法は文字列を正しく反転できるとは限りません。

const str='asdfghjkl';
D=str.split('').reverse().join(''); //="lkjhgfdsa"

reverse() で、split()で得られた配列要素を逆順にする。

join() で、配列をつなげる。

Unicode 対応の分割を使用している場合でも、文字列に書記素クラスターが含まれていると機能しません(代わりに などを使ってください)。

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

=== 演算子を使用すると、元の文字列が回文であるかどうかが判定できます。


テスト