Ich extrahiere ein Zeichen in einer Javascript-Zeichenfolge mit:
var first = str.charAt(0);
und ich möchte prüfen, ob es sich um einen Brief handelt. Seltsamerweise scheint es nicht so zu sein, dass solche Funktionen in Javascript vorhanden sind. Zumindest kann ich es nicht finden.
Wie kann ich das testen?
javascript
string
character
letter
Jérôme Verstrynge
quelle
quelle
NaN
? OderisNan(first)
ich denke nur.Antworten:
Ich glaube, dieses Plugin hat die Funktionen, die Sie suchen: http://xregexp.com/plugins/ (Github-Link: https://github.com/slevithan/xregexp )
Damit können Sie einfach alle Unicode-Buchstaben mit abgleichen
\p{L}
.Lesen Sie den Header dieser Quelldatei, um festzustellen, welche Kategorien unterstützt werden: http://xregexp.com/plugins/xregexp-unicode-categories.js
quelle
Ich glaube nicht, dass es dafür eine eingebaute Funktion gibt. Aber es ist einfach genug, mit einem regulären Ausdruck zu schreiben
quelle
var char=str.toLowerCase(); return (char.length==1 && char>='a' && char<='z')
str
es sich um einen Wert von az handelt, wird dieser Wert zurückgegeben. Andernfalls wird null zurückgegeben. Wenn Sie es benötigen, um true / false zurückzugeben, verwenden Sie dies.isLetter: function (str) { if (str.length !== 1 && str.match(/[a-z]/i)) { return true; } return false; },
In Bezug auf Sonderzeichen, die bei einfacheren Überprüfungen nicht berücksichtigt werden
/[a-zA-Z]/.test(c)
, kann es von Vorteil sein, die ECMAScript-Falltransformation zu nutzen (toUpperCase
). Nicht-ASCII-Unicode-Zeichenklassen einiger fremder Alphabete werden berücksichtigt.HINWEIS: Diese Lösung funktioniert nur für die meisten lateinischen, griechischen, armenischen und kyrillischen Skripte. Es funktioniert NICHT für Chinesisch, Japanisch, Arabisch, Hebräisch und die meisten anderen Skripte.
quelle
/[a-z]/i
Muster basierenden Lösung akzeptiert dieser Trick den gesamten Bereich der lateinischen Zeichen. Im Vergleich zu der anderen Lösung mit einer vollständigen lateinischen Unicode-Zuordnung von oben nach unten sparen Sie 99,2% an Codegröße. Es ist irreführend, diese Lösung als "falsch" zu bezeichnen, da dies von Ihrem Problem abhängt. Wenn Ihr Anwendungsbereich der lateinische Zeichensatz ist, ist dies eine schlanke und elegante Möglichkeit, ihn zu lösen.Wird nur im Falle eines Briefes wahr zurückgegeben
Wie im folgenden Kommentar erwähnt, müssen Sie, wenn Ihr Charakter nicht Englisch, Hoch-Ascii oder Doppelbyte-Bereich ist, die Prüfung auf Codepunkt hinzufügen.
quelle
1a
zum Beispiel verhindern .Wie wäre es mit ASCII-Codes?
quelle
Diese Lösung funktioniert mit Sonderzeichen zu, zum Beispiel
é
,è
,ê
,ü
,ö
,à
2 Schritte:
Live-Demos meiner Lösung:
Hinweis : Ich habe die Lösung veröffentlicht, die globale Funktionen verwendet, da sie wahrscheinlich am einfachsten zu verstehen ist. Schauen Sie sich aber das "Javascript-Modulmuster" an, wenn Sie besseren Code wünschen (sauberer, einfacher zu warten und zu erweitern), siehe eindrucksvolles Web.com/my-current-javascript-design-pattern und auch dieses YouTube-Video (Präsentation von Paul Irish).
quelle
ES6 unterstützt Unicode-fähige reguläre Ausdrücke.
Dies funktioniert für alle Alphabete.
Leider gibt es in Firefox einen Fehler (der in Version 78 behoben wird), der verhindert, dass dieser universell verwendet wird. Wenn Sie jedoch Ihre Laufzeitumgebung steuern können und diese unterstützt (z. B. Node.js), ist dies eine einfache und umfassende Lösung.
Atlernativ bietet XRegExp allen Browsern eine Polyfüllung mit modernen regulären Ausdrücken.
quelle
Ich poste hier, weil ich keine neue Frage stellen wollte. Angenommen, der Code enthält keine einzelnen Zeichendeklarationen, können Sie das Zeichen auswerten (), um einen Fehler zu verursachen, und den Typ des Zeichens überprüfen. Etwas wie:
quelle
Mithilfe einer integrierten Standardfunktion isNaN oder Number.isNaN () aus ES6 können Sie feststellen , ob das Zeichen ein Buchstabe ist oder nicht :
Es wird true erneut ausgeführt, wenn der angegebene Wert keine Zahl ist, andernfalls false.
quelle
Es gibt eine alte Schulmethode, die wir beim Lernen in vielen Sprachen angewendet haben.
quelle
ž
. Der Algorithmus, der Groß- und Kleinbuchstaben vergleicht, ist überlegen.quelle
Ich habe eine Funktion gemacht, um dies zu tun:
Dies überprüft grundsätzlich in der ASCII-Tabelle, ob sich der Code des Zeichens auf einen Buchstaben bezieht.
Sie können die ASCII-Tabelle unter diesem Link sehen und die Spalten DEC (wo ist der Code) und das Symbol vergleichen : https://www.ascii-code.com/
Hinweis: Meine Funktion gilt nur für "einfache" Buchstaben (z. B. "Á", "é", "ç", "Ü"). Es wird false zurückgegeben. Bei Bedarf können Sie diese Funktion jedoch an andere Bedingungen anpassen ).
quelle
Wir haben also ein erstes Zeichen mit der
charArt()
Funktion erhalten und versuchen dann, ir mit einem regulären Ausdruck abzugleichen, um zu überprüfen, ob ein Buchstabe von a bis z in Kleinbuchstaben geschrieben ist, und geben das Ergebnis als a zurückboolean
quelle
Wir können auch auf einfache Weise überprüfen, wie:
quelle
Für normalen englischen Ascii-Code zwischen 0 und 127 (Nicht für Chinesisch und andere Alphabete, weil Sie angeblich nicht in solchen arbeiten)
Bitte konsultieren oder googeln Sie Ihre Ascii-Tabelle .
quelle
"a" <= currentChar && currentChar <= "z"
viel einfacher.