この記事は編集レビューを必要としています。ぜひご協力ください。
[@@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 2017 Draft (ECMA-262) RegExp.prototype[@@split] の定義 |
ドラフト |
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | ? | 49 (49) | ? | ? | ? |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | ? | ? | 49.0 (49) | ? | ? | ? |