Wenn diese genaue Frage schon einmal gestellt wurde, weisen Sie mich bitte auf die entsprechende Frage hin.
tl; dr: Wie vergleicht man zwei Strings in JavaScript und ignoriert die Hülle nach Englisch Regeln?
Mein Code analysiert und vergleicht Daten aus zwei verschiedenen Quellen, von denen jede unterschiedliche Meinungen darüber hat, ob Schlüsselwörter groß oder klein sein sollten, was bedeutet, dass ein Vergleich zwischen Groß- und Kleinschreibung erforderlich ist. Ich möchte jedoch nicht, dass das System bricht, wenn es in anderen Kulturen verwendet wird (wie die Türkei und ihre notorischen Probleme mit dem Buchstaben I).
Hat JavaScript eine Möglichkeit, einen kulturunabhängigen (lesen: englischen) Vergleich von Groß- / Kleinschreibung ohne Bedeutung durchzuführen?
Wie vergleicht man zwei Strings in JavaScript, ohne zu brechen, wenn man sie in anderen Kulturen benutzt (wie die Türkei und ihre notorischen Probleme mit dem Buchstaben I)? Gibt es bei JavaScript eine Möglichkeit, einen kulturunabhängigen Vergleich von Groß- und Kleinschreibung unabhängig voneinander durchzuführen?
Ja, indem Sie einfach die Standardmethode .toLowerCase
Das ist nicht betroffen durch Gebietsschemaeinstellungen. a.toLowerCase() == b.toLowerCase()
ist völlig in Ordnung. Die Spezifikation schreibt sogar vor:
Das Ergebnis muss gemäß den Fallzuordnungen in der Unicode-Zeichendatenbank
abgeleitet werden
Dies ist definitiv konsistent über alle Systeme unabhängig von ihren Einstellungen.
Wenn Sie das aktuelle Gebietsschema berücksichtigen, verwenden Sie .toLocaleLowerCase
explizit. MDN besagt:
In den meisten Fällen wird dies zu demselben Ergebnis wie zu LowerCase () führen, aber für einige Gebietsschemas wie Türkisch, deren Fallzuordnungen nicht den standardmäßigen Fallzuordnungen in Unicode folgen, kann ein anderes Ergebnis vorliegen.
>
aber auf Gebietsschemata zu vertrauen scheint nicht gut zu funktionieren ...
Theoretisch gibt es dafür eine Methode: String.localCompare ( ) .
Das Problem ist, dass es von den meisten Browsern nicht korrekt implementiert wird.
Vielleicht haben Sie mehr Glück mit String.toLocaleLowerCase () .
Beispiel:
%Vor%Beachten Sie, dass die folgenden Einträge nicht übereinstimmen (weil ä und a unterschiedliche Zeichen sind):
%Vor% Sie können localeCompare
verwenden, aber beachten Sie, dass es zwischen Browsern unterschiedlich implementiert ist. Was in Chrome / Firefox / IE11 funktioniert, ist:
Tags und Links javascript culture string-comparison