Javascript feststellen, ob die englische Alphabete nur
Bin auf der Suche nach text nur, wenn es mit Englisch Buchstaben und zahlen mit Javascript/jQuery.
Frage mich, was ist der effizienteste Weg, dies zu tun? Denn es könnten tausend Worte, sollte es so schnell wie möglich und ich will nicht von regex.
var names[0] = 'test';
var names[1] = 'हिन';
var names[2] = 'لعربية';
for (i=0;i<names.length;i++) {
if (names[i] == ENGLISHMATCHCODEHERE) {
//do something here
}
}
Vielen Dank für Ihre Zeit.
- Was ist falsch mit der Verwendung von regex?
- Würde nicht regex langsam sein? Vor allem auf Hunderte von Wörtern.
- Ich glaube, Sie brauchen, um zu erklären, warum Sie nicht verwenden möchten regex. Reguläre Ausdrücke existieren, die genau diese Art von problem: string pattern-matching. Ich würde garantieren, dass reguläre Ausdrücke werden 'so schnell wie möglich', also ohne weitere Informationen, ohne Sie als Lösung nicht sinnvoll ist.
- Randnotiz: Dein Beispiel-code ist ungültig, die erste Reihe von Erklärungen sind syntax-Fehler. Ich nehme an, du meinst
var names = [];
und dannnames[0] = ...
usw. (keinevar
vor Ihnen) und dass Sie erstellen ein array von Namen. - "Wäre das nicht regex langsam sein? Vor allem auf Hunderte von Worten." Nein, fast sicher schneller (nicht nur schneller, sondern viel schneller) als nur über etwas anderes, was du tun wirst, in der Tat. Werden Sie sicher, dass Sie die Wiederverwendung (anstatt neu zu kompilieren) die regex in jeder loop-iteration (ein literal ist in Ordnung).
- Sorry das war nur ein Beispiel... Bin eine erweiterte JS-Programmierer. Hatte gehofft, für eine schnellere Lösung als regex.
- Langsam im Vergleich zu, sagen wir, chunking durch die Streicher ein Zeichen in einer Zeit, machen Sie sicher, dass alle fallen, die in einem bestimmten Bereich? Implementieren Sie es mit regexes. Wenn die Lösung beweist, zu langsam, überqueren diese Brücke, wenn Sie zu ihm kommen. Aber wenn dein problem aussieht wie ein Nagel, fühlt sich an wie ein Nagel, riecht wie ein Nagel, ist lang und spitz wie ein Nagel aus, und hat eine Beschriftung, die sagen "Hi! Ich bin ein Nagel!", beenden Sie overthinking Ihre Lösung und schnappen Sie sich einen hammer.
- Siehe mein Kommentar oben (überlappende Kommentare). Ich bezweifle sehr, du bist nicht tun es schneller in JavaScript als JavaScript-engine eingebaute regex-handling.
- Danke an alle für Eure inputs 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein regulärer Ausdruck dafür könnte sein:
Nun, ich weiß nicht, ob Sie einschließen möchten, Räume und Sachen wie, dass; der reguläre Ausdruck erweitert werden könnte. Sie würde es verwenden, wie diese:
Siehe auch dies: Regulären Ausdruck übereinstimmen, nicht-englische Zeichen?
Bearbeiten mein Gehirn herausgefiltert, die "ich will nicht, um einen regex verwenden," weil es nicht die "isSilly()" testen. Sie können immer überprüfen Sie die Zeichen-code der einzelnen Buchstaben im Wort, aber das ist langsamer sein (vielleicht viel langsamer) als das lassen die regex-matcher arbeiten. Die integrierte engine für reguläre Ausdrücke ist wirklich schnell.
Wenn Sie besorgt über die Leistung, immer machen Sie einige einfache tests, die den ersten, bevor Sie Annahmen über die Technologie (es sei denn, Sie haben intime Kenntnis der Technik schon).
Wenn du tot bist vor mit regexes, Sie könnte etwas wie das hier tun:
...aber ein regex würde fast sicher sein, Größenordnungen schneller.
Mithilfe von regex ist der Schnellste Weg, dies zu tun, fürchte ich. Dies ist meines Wissens sollte der Schnellste Algorithmus:
Sollten Sie überlegen, Wörter, die Sonderzeichen enthalten. Zum Beispiel ist {es ist}, ist es nicht Deutsch?