Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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.
DieisWellFormed() Methode vonString Werten gibt einen Booleschen Wert zurück, der anzeigt, ob diese Zeichenkettelone surrogates enthält.
In diesem Artikel
Syntax
isWellFormed()Parameter
Keine.
Rückgabewert
Gibttrue zurück, wenn diese Zeichenkette keine lone surrogates enthält, andernfallsfalse.
Beschreibung
Zeichenketten in JavaScript sind UTF-16-kodiert. Die UTF-16-Kodierung hat das Konzept derSurrogatpaare, die im AbschnittUTF-16-Zeichen, Unicode-Codierungen und Graphem-Cluster ausführlich erläutert werden.
isWellFormed() ermöglicht es Ihnen zu testen, ob eine Zeichenkette wohlgeformt ist (d.h. keine lone surrogates enthält). Im Vergleich zu einer benutzerdefinierten Implementierung istisWellFormed() effizienter, da Engines direkt auf die interne Repräsentation von Zeichenketten zugreifen können. Wenn Sie eine Zeichenkette in eine wohlgeformte Zeichenkette umwandeln müssen, verwenden Sie dietoWellFormed() Methode.isWellFormed() erlaubt es, fehlerhafte Zeichenketten anders zu behandeln als wohlgeformte, wie z.B. das Werfen eines Fehlers oder das Markieren als ungültig.
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// trueVermeidung von Fehlern in encodeURI()
encodeURI löst einen Fehler aus, wenn die übergebene Zeichenkette nicht wohlgeformt ist. Dies kann vermieden werden, indemisWellFormed() verwendet wird, um die Zeichenkette zu testen, bevor sie anencodeURI() übergeben wird.
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> |