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

構文

regexp[Symbol.split](str[, limit])

引数

str
分割操作の対象。
limit

オプション。分割数の上限を指定する整数を渡す。[@@split]() メソッドは、分割項目の数が limit に一致するか、文字列が this パターンを満たさなくなるまで、this RegExp パターンに一致するすべてを分割します。

戻り値

要素として部分文字列を含む Array

説明

separator 引数が RegExp オブジェクトだった場合、このメソッドは String.prototype.split() の内部で呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。

'a-b-c'.split(/-/);

/-/[Symbol.split]('a-b-c');

このメソッドは、RegExp のサブクラスで分割の振る舞いをカスタマイズするために存在します。

str 引数が RegExp オブジェクトではない場合、String.prototype.split() は、このメソッドを呼び出すことも RegExp オブジェクトを生成することもありません。

直接呼出し

this の扱いと引数の並び順を除いて、このメソッドは String.prototype.split() とほとんど同じように使用できます。

var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.split](str);
console.log(result);  // ["2016", "01", "02"]

サブクラスで @@split を使用する

既定の動作を修正するために、RegExp のサブクラスで [@@split]() メソッドをオーバーライドできます。

class MyRegExp extends RegExp {
  [Symbol.split](str, limit) {
    var result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map(x => "(" + x + ")");
  }
}

var re = new MyRegExp('-');
var str = '2016-01-02';
var result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]

仕様

仕様 状態 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.prototype[@@split] の定義
標準 初期定義。
ECMAScript Latest Draft (ECMA-262)
RegExp.prototype[@@split] の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
@@splitChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 49IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 49Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連項目

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

このページの貢献者: mdnwebdocs-bot, segayuu, YuichiNukiyama
最終更新者: mdnwebdocs-bot,