--- title: String.prototype.split() slug: Web/JavaScript/Reference/Global_Objects/String/split tags: - JavaScript - Method - Prototype - Reference - Regular Expressions - String - プロトタイプ - メソッド - 正規表現 translation_of: Web/JavaScript/Reference/Global_Objects/String/split ---
{{JSRef}}

split() メソッドは、 {{jsxref("String")}} を指定した区切り文字列で分割することにより、文字列の配列に分割します。

{{EmbedInteractiveExample("pages/js/string-split.html", "taller")}}

構文

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

引数

separator {{optional_inline}}

分割を行うところにある文字列です。文字列または{{jsxref("Global_Objects/RegExp", "正規表現", "", 1)}}を指定することができます。

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

limit {{optional_inline}}

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

返値

文字列の {{jsxref("Array")}} で、指定された文字列で separator が現れるたびに分割されたものです。

解説

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

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

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

split() の使用

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

const myString = ''
const splits = myString.split()

console.log(splits)

// ↪ [""]

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

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

  console.log('元の文字列: ', stringToSplit)
  console.log('区切り文字列: ' , separator)
  console.log('配列の要素数は', arrayOfStrings.length, '件: ', arrayOfStrings.join(' / '))
}

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

const space = ' '
const 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() の結果として返された配列です。

const names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '

console.log(names)

const re = /\s*(?:;|$)\s*/
const 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 つの分割結果を返します。

const myString = 'Hello World. How are you doing?'
const splits = myString.split(' ', 3)

console.log(splits)

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

["Hello", "World.", "How"]

RegExp で分割して結果に区切り文字列の一部を含める

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

const myString = 'Hello 1 word. Sentence number 2.'
const splits = myString.split(/(\d)/)

console.log(splits)

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

[ "Hello ", "1", " word. Sentence number ", "2", "." ]

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

split() を使った文字列を反転

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

const str = 'asdfghjkl'
const strReverse = str.split('').reverse().join('')
// 'lkjhgfdsa'

// split() が配列を返し、 reverse() および join() が適用できます

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

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

ボーナス: {{jsxref("Operators/Comparison_Operators", "===", "#Identity_strict_equality_(===)")}} 演算子を使用すると、元の文字列が回文であるかどうかが判定できます。

仕様書

仕様書
{{SpecName('ESDraft', '#sec-string.prototype.split', 'String.prototype.split')}}

ブラウザーの互換性

{{Compat("javascript.builtins.String.split")}}

関連情報