Ich habe diese Funktion gemacht:
%Vor%Nun sollte es kyrillischen Text ins Lateinische transkribieren und das Latein einfach passieren lassen. Aber es gelingt erst später, das erste zu transkribieren, und im Falle des Lateinischen gibt es undefiniert als Antwort. Könnte mir jemand eine Idee geben, was mache ich falsch?
Ein paar Dinge ...
Hier ist der Code
%Vor%Funktionaler ist so ...
%Vor% Verwenden Sie kein Array für diese Aufgabe. Verwenden Sie nicht for in
, um eine Zeichenfolge zu wiederholen. Überprüfen Sie nicht gegen die Zeichenfolge "undefined"
. Nicht return
in der for
Schleife.
In meinen Projekten verwende ich diese Methode der Transliteration:
%Vor%Führen Sie dieses Beispiel durch, um zu transkribieren:
%Vor%Ich habe alle russischen Buchstaben durch ihre Unicode-Analoga ersetzt (jeder Buchstabe beginnt mit \ u), um Probleme mit der Kodierung in der Javascript-Datei zu lösen.
Um die Ausführungsgeschwindigkeit zu überprüfen, habe ich die beste Antwort auf diese Frage genommen und sie mit meinem Beispiel verglichen. Meine Methode schien mehrmals schneller zu sein (0.16 ms in Firebug :-).
Ihr Hauptproblem ist, dass return
an der falschen Stelle ist. Es ist innerhalb Ihrer Schleife, so dass es bei der ersten Iteration zurückkehrt. Ändere es zu:
Beachten Sie, dass ich die Einrückung korrigiert habe. Eine konsistente Einrückung hilft Ihnen, diese Art von Fehlern zu vermeiden.
Hinweis 1: Es gibt nichts für Ihr A
-Objekt, das die Tatsache verwendet, dass es ein Array
ist. Sie verwenden es nur als Karte. In JavaScript sind alle Objekte Maps, also verwenden Sie% A = new Array();
nicht A = {};
.
Hinweis 2: A
und i
werden niemals in deiner Funktion deklariert, so dass du Opfer von Der Horror impliziter Globals . Um es zu beheben, deklariere sie mit var
.
Hinweis 3: Die Verwendung von for..in
zum Durchlaufen der Zeichen einer Zeichenfolge oder die Verwendung von []
zum Indizieren in die Zeichenfolge ist in JavaScript-Engines nicht zuverlässig. Verwenden Sie stattdessen for (i = 0; i < word.length; ++i)
und dann ch = word.charAt(i);
, um das Zeichen an dieser Position abzurufen, und verwenden Sie dann ch
in Ihrem Code innerhalb der Schleife.
Hinweis 4: Sie können den Seltsam mächtigen ||
operator
Russische Symbole in js funktionieren überhaupt nicht in meinem System. Ich weiß nicht warum. Also benutze ich den nächsten Code dafür:
Es wird nicht nur transkribiert, sondern alle Interpunktion durch "_" und Kleinbuchstaben ersetzt.
Der Code wurde ursprünglich hier verwendet: Ссылка und dann refaktoriert.
Tags und Links javascript transliteration