483 Stimmen

Wie kann ich mit JavaScript testen, ob ein Buchstabe in einer Zeichenkette groß oder klein geschrieben wird?

Wie kann ich mit JavaScript testen, ob ein Buchstabe in einer Zeichenkette groß oder klein geschrieben wird?

8voto

Stephen Nelson Punkte 899

Eine gute Antwort auf diese Frage sollte kurz und bündig sein, Unicode korrekt behandeln und mit leeren Strings und Nullen umgehen können.

function isUpperCase(c) {
    return !!c && c != c.toLocaleLowerCase();
}

Dieser Ansatz behandelt zunächst leere Zeichenfolgen und Nullen und stellt dann sicher, dass die Konvertierung der gegebenen Zeichenfolge in Kleinbuchstaben ihre Gleichheit ändert. Dadurch wird sichergestellt, dass die Zeichenkette mindestens einen Großbuchstaben gemäß den Großschreibregeln des aktuellen Gebiets enthält (und keine falsch positiven Ergebnisse für Zahlen und andere Zeichen ohne Großschreibung liefert).

Die ursprüngliche Frage bezog sich auf den Test des ersten Zeichens. Um Ihren Code einfach und klar zu halten, würde ich das erste Zeichen aus der Zeichenfolge getrennt von der Prüfung, ob es Großbuchstaben ist aufgeteilt.

7voto

James Punkte 5021

Es gibt eine ganz einfache Antwort, die noch niemand erwähnt hat:

function isLowerCase(str) {
    return str !== str.toUpperCase();
}

Si str.toUpperCase() gibt nicht denselben str muss es klein geschrieben werden. Um die Großschreibung zu testen, ändern Sie sie in str !== str.toLowererCase() .

Im Gegensatz zu einigen anderen Antworten funktioniert sie bei Nicht-Alpha-Zeichen korrekt (gibt false ) und funktioniert auch für andere Alphabete, akzentuierte Zeichen usw.

7voto

Nat Punkte 2305

Sie können auch einen regulären Ausdruck verwenden, um Großbuchstaben des lateinischen Alphabets explizit zu erkennen.

isUpperCase = function(char) {
  return !!/[A-Z]/.exec(char[0]);
};

EDIT: Die obige Funktion ist korrekt für ASCII/Basic Latin Unicode, was wahrscheinlich alles ist, was Sie jemals interessieren wird. Die folgende Version unterstützt auch Latin-1 Supplement und griechische und koptische Unicode-Blöcke... Für den Fall, dass Sie das aus irgendeinem Grund brauchen.

isUpperCase = function(char) {
  return !!/[A-ZÀ-ÖØ-Þ---]/.exec(char[0]);
};

Diese Strategie funktioniert nicht, wenn Sie weitere Unterstützung benötigen (Großbuchstaben?), da einige Blöcke Groß- und Kleinbuchstaben mischen.

7voto

farhanahmedhasan Punkte 107

Ich glaube, dies ist die einfachste Lösung. Sie können den onchange-Handler im Eingabefeld verwenden, um die Validierung durchzuführen.

const isValid = e.target.value === e.target.value.toLowerCase()

if (isValid) {
  //Do something
} else {
  //Do something
}

5voto

Gibolt Punkte 32347

Dies ist eine unkomplizierte, lesbare Lösung mit einer einfachen Regex.

// Get specific char in string
const char = string.charAt(index);

const isLowerCaseLetter = (/[a-z]/.test(char));
const isUpperCaseLetter = (/[A-Z]/.test(char));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X