String.prototype.isWellFormed()
Baseline 2023Newly available
Since October 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die isWellFormed()
Methode von String
Werten gibt einen booleschen Wert zurück, der angibt, ob dieser String einsame Surrogate enthält oder nicht. Einsame Surrogate sind ein wichtiges Konzept in der Textverarbeitung.
Syntax
isWellFormed()
Parameter
Keine.
Rückgabewert
Gibt true
zurück, wenn dieser String keine einsamen Surrogate enthält, andernfalls false
.
Beschreibung
Strings in JavaScript sind UTF-16 kodiert. Die UTF-16-Kodierung hat das Konzept der Surrogatpaare, welches im Abschnitt über UTF-16 Zeichen, Unicode-Codepunkte und Grapheme-Cluster ausführlich beschrieben wird.
isWellFormed()
ermöglicht es Ihnen, zu überprüfen, ob ein String wohlgeformt ist (d.h. ob er keine einsamen Surrogate enthält). Im Vergleich zu einer benutzerdefinierten Implementierung ist isWellFormed()
effizienter, da Engines direkt auf die interne Darstellung von Strings zugreifen können. Wenn Sie einen String in einen wohlgeformten String umwandeln müssen, verwenden Sie die toWellFormed()
Methode. isWellFormed()
ermöglicht es Ihnen, schlecht geformte Strings anders zu behandeln als wohlgeformte, beispielsweise indem Sie einen Fehler auslösen oder ihn als ungültig markieren.
Beispiele
Verwendung von isWellFormed()
const strings = [
// Lone leading surrogate
"ab\uD800",
"ab\uD800c",
// Lone trailing surrogate
"\uDFFFab",
"c\uDFFFab",
// Well-formed
"abc",
"ab\uD83D\uDE04c",
];
for (const str of strings) {
console.log(str.isWellFormed());
}
// Logs:
// false
// false
// false
// false
// true
// true
Fehler bei encodeURI() vermeiden
encodeURI
wirft einen Fehler, wenn der übergebene String nicht wohlgeformt ist. Dies kann vermieden werden, indem Sie isWellFormed()
verwenden, um den String zu testen, bevor Sie ihn an encodeURI()
übergeben.
const illFormed = "https://example.com/search?q=\uD800";
try {
encodeURI(illFormed);
} catch (e) {
console.log(e); // URIError: URI malformed
}
if (illFormed.isWellFormed()) {
console.log(encodeURI(illFormed));
} else {
console.warn("Ill-formed strings encountered."); // Ill-formed strings encountered.
}
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string.prototype.iswellformed |