Start · Sprachen · JavaScript · Referenz · String.prototype.toLocaleUpperCase()

String.prototype.toLocaleUpperCase()

Methode

Gibt die Zeichenkette in Großbuchstaben zurück und berücksichtigt dabei sprachspezifische Regeln, z. B. das türkische <code>i</code> → <code>İ</code>.

seit JavaScript ES5.1; Parameter locales seit ECMA-402 (Intl) – Ba Kategorie: method-property

Signatur

String.prototype.toLocaleUpperCase(locales)

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

Typ
string
Beschreibung
Ein neuer String, in dem alle Buchstaben nach den Regeln der gewählten Sprache in Großbuchstaben umgewandelt sind. Der Originalstring bleibt unverändert.

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());
ISTANBUL İSTANBUL ISTANBUL

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
HAUPTSTRASSE 11 12 Hauptstraße

Ü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'));
İLGİNÇ HABERLER NEUIGKEITEN

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']));
İZMİR IZMIR

// 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 ist a.localeCompare(b, sprache, { sensitivity: 'accent' }) oder Intl.Collator.
  • Nicht umkehrbar: Wer "STRASSE" wieder in Kleinbuchstaben umwandelt, erhält "strasse", nicht "straße".
  • Fehler: Ein ungültiger Sprachcode löst einen RangeError aus. Ein Aufruf über call mit null oder undefined als this löst einen TypeError aus. Andere Werte werden vorher in einen String umgewandelt.
  • Kompatibilität: Die Methode gibt es in allen Browsern und in Node.js. Der Parameter locales wird von allen modernen Umgebungen unterstützt. Node.js-Builds mit small-icu oder ohne ICU kennen unter Umständen keine sprachspezifischen Regeln und verhalten sich dann wie toUpperCase().
  • Ohne Argument hängt das Ergebnis von der Umgebung ab. Für reproduzierbare Ergebnisse (Tests, Server) sollten Sie die Sprache immer ausdrücklich angeben.