Baseline Widely available
Die [Symbol.split]()
-Methode von RegExp
-Instanzen spezifiziert, wie String.prototype.split
funktionieren soll, wenn der reguläre Ausdruck als Trennzeichen übergeben wird.
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(/-/));
// Expected output: Array ["2016", "01", "02"]
Syntax
regexp[Symbol.split](str)
regexp[Symbol.split](str, limit)
Parameter
str
Das Ziel der Teilungsoperation.
limit
Optional
Ein Integer, der ein Limit für die Anzahl an gefundener Teilungen angibt. Die [Symbol.split]()
-Methode teilt weiterhin bei jedem Treffer des this
-RegExp-Musters (oder, in der oben stehenden Syntax, regexp
), bis die Anzahl der Teilungselemente das limit
erreicht oder der String nicht mehr dem this
-Muster entspricht.
Ein Array
, das Teilstrings als seine Elemente enthält. Erfasste Gruppen sind enthalten.
Diese Methode wird intern in String.prototype.split()
aufgerufen, wenn ein RegExp
als Trennzeichen übergeben wird. Zum Beispiel liefern die folgenden beiden Beispiele das gleiche Ergebnis.
"a-b-c".split(/-/);
/-/[Symbol.split]("a-b-c");
Diese Methode existiert, um das Verhalten von split()
in RegExp
-Unterklassen anzupassen.
Die RegExp.prototype[Symbol.split]()
Basismethode zeigt die folgenden Verhaltensweisen:
[Symbol.species]
verwendet, um ein neues RegExp zu erstellen, wodurch verhindert wird, dass das ursprüngliche RegExp in irgendeiner Weise verändert wird.g
("global")-Flag des RegExp wird ignoriert, und das y
("sticky")-Flag wird immer angewendet, selbst wenn es ursprünglich nicht vorhanden war./a?/
), wird ein leeres Array zurückgegeben. Andernfalls wird, wenn das RegExp keinen leeren String abgleichen kann, [""]
zurückgegeben.this.exec()
aufgerufen wird. Da das RegExp immer sticky ist, bewegt es sich entlang des Strings und liefert jedes Mal einen übereinstimmenden String, einen Index und alle erfassten Gruppen.lastIndex
dennoch verschoben - wenn das Regex Unicode-fähig ist, wird um einen Unicode-Codepunkt verschoben; andernfalls um eine UTF-16-Codeeinheit.limit
Parameter, falls angegeben, während versucht wird, so nah wie möglich zu sein. Daher können die letzte Ãbereinstimmung und ihre erfassten Gruppen möglicherweise nicht alle im zurückgegebenen Array enthalten sein, wenn das Array bereits gefüllt ist.Diese Methode kann auf fast die gleiche Weise verwendet werden wie String.prototype.split()
, auÃer dem unterschiedlichen this
und der unterschiedlichen Reihenfolge der Argumente.
const re = /-/g;
const str = "2016-01-02";
const result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
Verwendung von [Symbol.split]()
in Unterklassen
Unterklassen von RegExp
können die [Symbol.split]()
-Methode überschreiben, um das Standardverhalten zu verändern.
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 calls re[Symbol.split]().
console.log(result); // ["(2016)", "(01)", "(02)"]
Spezifikationen Browser-Kompatibilität Siehe auch
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