Signatur
Beschreibung
toLocaleUpperCase() wandelt alle Buchstaben einer Zeichenkette in Großbuchstaben um. Anders als toUpperCase() kann die Methode dabei die Regeln einer bestimmten Sprache anwenden. Bei den meisten Sprachen ist das Ergebnis dasselbe. Unterschiede gibt es aber etwa im Türkischen und Aserbaidschanischen, wo aus i ein İ (I mit Punkt) wird, und im Litauischen.
Die Methode verändert den Originalstring nicht, weil Strings in JavaScript unveränderlich sind. Sie gibt immer einen neuen String zurück. Das Ergebnis kann länger sein als die Eingabe: Aus "ß" wird zum Beispiel "SS".
Verwenden Sie toLocaleUpperCase(), wenn Sie Text für Menschen anzeigen, etwa Überschriften, Namen oder Ortsangaben in einer bekannten Sprache. Für interne Vergleiche, Schlüssel oder Protokollwerte (HTTP-Methoden, Enum-Werte) ist toUpperCase() besser geeignet. Deren Ergebnis hängt nicht von der Spracheinstellung ab und ist daher immer gleich.
Wenn Sie kein locales-Argument angeben, verwendet die Methode die Standardsprache der Laufzeitumgebung. Das Ergebnis kann also je nach Browser- oder Systemeinstellung unterschiedlich ausfallen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locales | string | string[] | Intl.Locale | undefined | Standardsprache der Laufzeitumgebung | BCP-47-Sprachcode (z. B. "tr-TR", "de") oder eine Liste davon. Bei einer Liste wird nur der erste gültige Eintrag verwendet, anders als bei Intl-Konstruktoren. Ein ungültiger Sprachcode löst einen RangeError aus. |
Rückgabewert
Beispiele
Türkisches i korrekt großschreiben
const stadt = 'istanbul';
console.log(stadt.toLocaleUpperCase('en-US'));
console.log(stadt.toLocaleUpperCase('tr-TR'));
console.log(stadt.toUpperCase());
Deutsches ß: Ergebnis wird länger
const strasse = 'Hauptstraße';
const gross = strasse.toLocaleUpperCase('de-DE');
console.log(gross);
console.log(strasse.length, gross.length);
console.log(strasse); // Original unverändert
Überschrift in der Sprache des Nutzers
const formatiereTitel = (text, sprache = navigator.language) => {
try {
return text.toLocaleUpperCase(sprache);
} catch (err) {
// RangeError bei ungültigem Sprachcode -> Standardverhalten verwenden
return text.toLocaleUpperCase();
}
};
console.log(formatiereTitel('ilginç haberler', 'tr'));
console.log(formatiereTitel('neuigkeiten', 'kein_gültiger_code'));
Liste von Sprachcodes: nur der erste zählt
const wort = 'izmir';
console.log(wort.toLocaleUpperCase(['tr', 'en-US']));
console.log(wort.toLocaleUpperCase(['en-US', 'tr']));
// Wichtig · Fallstricke
- Länge ändert sich: Das Ergebnis kann mehr Zeichen haben als die Eingabe (
"ß"→"SS","fi"→"FI"). Verlassen Sie sich nicht auf gleiche Indizes oder Längen. - Nicht für Vergleiche ohne Groß-/Kleinschreibung geeignet:
a.toLocaleUpperCase() === b.toLocaleUpperCase()hängt von der Spracheinstellung ab und ist fehleranfällig. Besser ista.localeCompare(b, sprache, { sensitivity: 'accent' })oderIntl.Collator. - Nicht umkehrbar: Wer
"STRASSE"wieder in Kleinbuchstaben umwandelt, erhält"strasse", nicht"straße". - Fehler: Ein ungültiger Sprachcode löst einen
RangeErroraus. Ein Aufruf übercallmitnulloderundefinedalsthislöst einenTypeErroraus. Andere Werte werden vorher in einen String umgewandelt. - Kompatibilität: Die Methode gibt es in allen Browsern und in Node.js. Der Parameter
localeswird von allen modernen Umgebungen unterstützt. Node.js-Builds mitsmall-icuoder ohne ICU kennen unter Umständen keine sprachspezifischen Regeln und verhalten sich dann wietoUpperCase(). - Ohne Argument hängt das Ergebnis von der Umgebung ab. Für reproduzierbare Ergebnisse (Tests, Server) sollten Sie die Sprache immer ausdrücklich angeben.