Von Morsecode zu Text

Diskutiere Von Morsecode zu Text im Hausaufgaben Forum; nicht sicher bin was du mit deinem zweiten Satz meinst Wenn wir Anfang und Ende des Strings mal weglassen, dann liefert string.split(" ") die...

  1. mihe7
    mihe7 Bekanntes Mitglied
    Wenn wir Anfang und Ende des Strings mal weglassen, dann liefert string.split(" ") die Teile der Zeichenkette, die zwischen je einem Leerzeichen stehen.

    Nehmen wir mal Strings s1, s2 und s3 an, die keine Leerzeichen enthalten. Daraus können wir einen String basteln, String s = s1 + " " + s2 + " " + s3.

    s.split(" ") liefert nun ein Array, das aus s1, s2 und s3 besteht, also {s1, s2, s3}.

    Setzt Du s2 = "" (leerer String), dann ist
    Code (Text):

    s = s1 + " " + "" + " " + s3
      = s1 + " " + " " + s3
     
    und das von s.split(" ") gelieferte Array {s1, s2, s3} = {s1, "", s3}.

    Soweit verstanden?

    Der leere String ist jetzt einfach ein besonderer "Morsecode", den Du wie alle anderen Morsecodes auch über deine Map in Klartext (ein Leerzeichen) umwandelst.
     
  2. mihe7
    mihe7 Bekanntes Mitglied
    Kurz: du fügst in Deinen Morsecode-Konstruktor z. B. vor Mcode.put('A', "·-"); noch Mcode.put("", " "); ein. Den Rest kannst Du lassen, wie er ist.
     
  3. MoxxiManagarm
    MoxxiManagarm Aktives Mitglied
    Hier ein komplexeres Beispiel, damit der Kontext klarer wird:
    Code (Java):

    public class MorseDecoder {
        private static final Map<String, Character> LOOKUP = new HashMap<>();
        static {
            LOOKUP.put("·-", 'A');
            LOOKUP.put("-···", 'B');
            LOOKUP.put("-·-·", 'C');
            LOOKUP.put("-··", 'D');
            LOOKUP.put("·", 'E');
            LOOKUP.put("··-·", 'F');
            LOOKUP.put("--·", 'G');
            LOOKUP.put("····", 'H');
            LOOKUP.put("··", 'I');
            LOOKUP.put("·---", 'J');
            LOOKUP.put("-·-", 'K');
            LOOKUP.put("·-··", 'L');
            LOOKUP.put("--", 'M');
            LOOKUP.put("-·", 'N');
            LOOKUP.put("---", 'O');
            LOOKUP.put("·--·", 'P');
            LOOKUP.put("--·-", 'Q');
            LOOKUP.put("·-·", 'R');
            LOOKUP.put("···", 'S');
            LOOKUP.put("-", 'T');
            LOOKUP.put("··-", 'U');
            LOOKUP.put("···-", 'V');
            LOOKUP.put("·--", 'W');
            LOOKUP.put("-··-", 'X');
            LOOKUP.put("-·--", 'Y');
            LOOKUP.put("--··", 'Z');
            LOOKUP.put("-----", '0');
            LOOKUP.put("·----", '1');
            LOOKUP.put("··---", '2');
            LOOKUP.put("···--", '3');
            LOOKUP.put("····-", '4');
            LOOKUP.put("·····", '5');
            LOOKUP.put("-····", '6');
            LOOKUP.put("--···", '7');
            LOOKUP.put("---··", '8');
            LOOKUP.put("----·", '9');
            LOOKUP.put("·-·-·-", '.');
            LOOKUP.put("", ' ');
        }
     
        public static String decodeText(String text) {
            StringBuilder sb = new StringBuilder();
       
            for(String s : text.split(" ")) {
                sb.append(LOOKUP.get(s)); // TODO: care about null
            }
       
            return sb.toString();
        }
     
        public static void main(String... args) {
            System.out.println(
                    MorseDecoder.decodeText("···· · ·-·· ·-·· ---  ·-- --- ·-· ·-·· -··")
            );
        }
    }
     
    Prints:
    Code (Text):
    HELLO WORLD
    Mehr ist es nicht. Du muss nur noch das Fehlerhandling sowie deine Bezeichner etc anpassen und die Eingabe des zu decodierenden Textes hinzufügen.
     
  4. Lights
    Lights Neues Mitglied
    Danke Leute, ich hatte es die ganze Zeit schon gelöst, ich hatte nur noch eine Methode aufgerufen die die Hashmap aus einer externen Morsecode.txt füllt und in dieser war ("", ' ') natürlich nicht drin, es war also ein einfacher Flüchtigkeitsfehler von mir, trotzdem vielen Dank das ihr mir geholfen habt
     
  5. Lights
    Lights Neues Mitglied
    Jetzt stellt sich mir doch noch eine ganz andere Frage, wie ist es möglich das ich den Leerstring und den Leerchar über die Datei einlesen lasse, die .TXT sieht momentan so aus:

    F ..-.
    G --.
    H ....
    I ..
    J .---
    K -.-
    L .-..
    M --
    N -.
    O ---
    P .--.
    Q --.-
    R .-.
    S ...
    T -
    U ..-
    V ...-
    W .--
    X -..-
    Y -.--
    Z --..
    0 -----
    1 .----
    2 ..---
    3 ...--
    4 ....-
    5 .....
    6 -....
    7 --...
    8 ---..
    9 ----.
    . .-.-.-
    , --..--
    ? ..--..

    Wie füge ich am Ende den Key und den Value für die Leerzeichen ein ? Gibt es dafür überhuapt eine lösung
     
  6. MoxxiManagarm
    MoxxiManagarm Aktives Mitglied
    Ich würde daraus eine csv Datei (in deinem Fall ; getrennt) machen.
     
    Lights gefällt das.
  7. Lights
    Lights Neues Mitglied
    Stimmt, macht sinn, danke
     
  8. Hinweis: Du möchtest Java lernen? Vielleicht hilft dir dieser Kurs hier weiter. Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!
Die Seite wird geladen...

Von Morsecode zu Text - Ähnliche Themen

Theorie: Umwandeln von Text in Morsecode
Theorie: Umwandeln von Text in Morsecode im Forum Mobile Geräte
Von Wav Datei mit Morsecode in Morsecode als Textdatei
Von Wav Datei mit Morsecode in Morsecode als Textdatei im Forum Allgemeine Java-Themen
Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln
Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln im Forum Java Basics - Anfänger-Themen
MorseCode übersetzermit Swing-Code Schnipsel
MorseCode übersetzermit Swing-Code Schnipsel im Forum Hausaufgaben
Daten von Quelltext
Daten von Quelltext im Forum Allgemeine Java-Themen
Thema: Von Morsecode zu Text