switch - split usw:!?

heino-th

Erfahrenes Mitglied
Nabend, soo nun hab ich wieder mein nächstes Problem ^^

Also, ich möchte gerne das der User in ein Eingabefeld MorseCode eingeben kann,
der dann automatisch in normale Sprache umgewandelt wird!
Soll auch anders rum gehn, das kann der User dann per Radiobutton auswählen!

Also dachte ich mir ich nimm z.B: als Trennzeichen " "(Leerzeichen) und zerteile den Inhalt des Eingabefeldes per .split(" ");
Jut, funktioniert einwandfrei, dann hab ich per:
PHP:
ok.onPress = function() {
	
MorseCode = Eingabe_txt.text;
Ausgabe_txt.text = "";

MCode = MorseCode.split(" ");

x = 0;
MCode = "";

while(x < MCode.length) {
	switch(MCode[0]) {
		
		case "·-":	
		case ".-" :
			SCode += "A";
			break;
		case "-···":
		case "-...":
			SCode += "B";
			break;
		case "-·-·":
		case "-.-.":
			SCode += "C";
			break;
		//usw. 
	}
	x++;
}

Ausgabe_txt.text = SCode;
}

Gut, das funktioniert zwar auch einigermaßen, aber nicht so ganz wie ich mir das Vorstelle!
Wenn ich jetz z.b. .- (steht für A) eingebe, gibt er mir auch A aus!
Wenn ich nun z.b. .- (für A) und -.-. (für C) eingebe, gibt er mir 2x A aus! Da ja -.-. einmal auch .- enthält!?
Nun, wie könnte ich das lösen? Er soll nach dem ganzen Teil des Arrays suchen, nich nur nach Bruchstücken :D
Aja, noch n Problem, das ganze funktioniert außerdem auch nur wenn ich zwei durch " " getrennte wörter oder so eingebe, bei einem macht er gar nix?! An was liegt das?

Danke schonmal und ich hoffe ich störe nicht durch die zurzeit heufigen Fragnen *g* Die dann doch immer schnell durch euch gelöst werden (Vielen Dank an Datic, der meist am schnellsten antwortet ;))

mfg heino
 
Hi,

ich habe das Morsealphabet nicht im Kopf, aber mal ans Denkanstoß:
Code:
function toRealText(morsecode) {
    var codes = new Array(".", "..", "-.", ".-.", "--."); // Hier alle Codes geordnet
    var letters = new Array("A", "B", "C", "D" "E"); // alle Buchstaben in der selben Reihenfolge
    morsecode = morsecode.split(" ").join("_");
    for (var i=0; i<codes.length; i++) {
        morsecode = morsecode.split(codes[i]).join(letters[i]);
    }
    morsecode = morsecode.split("_").join("");
    return morsecode;
}

Man könnte auf das Array mit den Buchstaben verzichten, wenn man den ASCII-Wert verwendet, aber ich bin grade zu Faul in der Tabelle nach den Offsets zu schauen ... ^^

Gruß

P.S.: Mal ne andere Frage: Warum hast Du eigentlich alle case-Abfragen doppelt?
.
 
jo, hallo
Danke, werds gleich mal ausprobieren ;)

Die case-Abfrage is bei jedem etwas anders! ^^
Also einmal ist es mit einem normalen Punkt! Bsp: .-
Und einmal mit einem \cdot ^^ ·-

EIner, der schnell was eingeben möchte wird wahrscheinlich immer den Punkt benutzen,
derjenige der es aber komplett richtig machen möchte benutzt den \cdot (·)! :D

Also, danke, werds gleich mal ausprobieren

mfg heino
 
Zurück