A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.split below:

RegExp.prototype[Symbol.split]() - JavaScript | MDN

RegExp.prototype[Symbol.split]()

Baseline Widely available

[Symbol.split]() は RegExp インスタンスのメソッドで、 String.prototype.split にセパレーターとして正規表現が渡されたときにどのように動作するのかを指定します。

試してみましょう
class RegExp1 extends RegExp {
  [Symbol.split](str, limit) {
    const result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map((x) => `(${x})`);
  }
}

console.log("2016-01-02".split(new RegExp1("-")));
// Expected output: Array ["(2016)", "(01)", "(02)"]

console.log("2016-01-02".split(new RegExp("-")));
// Expected output: Array ["2016", "01", "02"]
構文
regexp[Symbol.split](str)
regexp[Symbol.split](str, limit)
引数
str

分割操作の対象。

limit 省略可

検出される分割数の制限を指定する整数。 [Symbol.split]() メソッドは、 this RegExp パターン (または上記の構文では regexp) に一致するたびに、分割項目の数が limit と一致するか、文字列が this パターンを満たなくなるまで、分割を行います。

返値

要素として部分文字列を含む配列 (Array)。

解説

このメソッドは String.prototype.split() において、RegExp がセパレーターとして渡された場合に内部的に呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。

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

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

このメソッドは、RegExp のサブクラスで split() の動作をカスタマイズするために存在します。

RegExp.prototype[Symbol.split]() ベースメソッドは、次のように動作します。

例 直接呼出し

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

const re = /-/g;
const str = "2016-01-02";
const result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
サブクラスで [Symbol.split]() を使用する

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

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

const re = new MyRegExp("-");
const str = "2016-01-02";
const result = str.split(re); // String.prototype.split は re[Symbol.split]() を呼び出す
console.log(result); // ["(2016)", "(01)", "(02)"]
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4