Textkonverter

  • Hallo liebe Community.


    Ich programmiere grade so zwischendurch zum Spaß einen Hiragan bzw Katakana Konvertert (hiragana und katakana sind japanische Schriftzeichenarten)
    Ich möchte dass er ganze Texte convertiert.

    Wen ich z.b Aishiteru eingebe soll er die schriftzeichen für A für i für shi für te für e und für ru aneinander gereiht ausgeben.
    Allerdings weiß ich nicht wie ich mache dass er einen Teil der Inputbox ausliet und konvertiert also müsste ich z.b für jedes wort und für jede Silbe eine If Abfrage machen und daran würd ich jahre sitzen :D.
    Das wäre dann auf diese Methode


    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <Crypt.au3>
    #Include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $Form2_1 = GUICreate("Hiragana/Katakana Konverter", 457, 90, 192, 124)
    $TextToConvert = GUICtrlCreateInput("", 8, 40, 345, 21)
    $Label1 = GUICtrlCreateLabel("Gib den Text ein den du in die Silbenschrift konvertieren willst.", 8, 16, 349, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Convert = GUICtrlCreateButton("Convert", 360, 8, 75, 57, $WS_GROUP)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1

    [/autoit][autoit][/autoit][autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit]

    case $Convert

    [/autoit][autoit][/autoit][autoit]

    If GuiCtrlRead($TextToConvert) = "fa" Then
    $OutputText = "Bla"
    else
    $OutputText = GuiCtrlRead($TextToConvert)
    endif

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "Hiragana Text", $OutputText)

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]


    Ich allerdings möchte dass wenn ich z.b fabe eingebe er erkennt "AHA da würde FA eingegeben das wird dann zu einem schriftzeichen" und "AHA da würde be eingegeben das wird dann zu einem schriftzeichen".
    Nach meiner Methode würde bei dem beispiel "FAB" folgendes rauskommen wenn ich eine if schleife für fa habe --> fab es würde sich also nix ändern
    Meine gewünschte Methode würde "Japanisches Schriftzeichen für fa" +b ausgeben.

    Fall es jemand an dem beispiel nicht verstanden hat nehmen wir mal ann ich möchte immer wenn fa geschrieben wird bla schreiben lassen.
    Wenn man also fa schreibt kommt bla, wenn man aber fab schreibt kommt fab weil er das fa nicht einzeln erkennt.

    Ich hoffe jemand kann mir da helfen :)
    Danke im Vorraus
    MFG Kyu

  • Moin versuche es mal mit einem 2DArray "alt|neu" und dann in eienr While-Schleife und Ubound($array)-1 immmer mit StringinStr schauen ob der Teil in deiner Eingabe vorkommt.
    Vielleicht schaffe ich es mal nachher ein Beispiel zu basteln.

    PS.
    Naturlich kannst du auch eine Ini-Datei anlegen, dann kannst du immer noch fehlende Teile einfügen ohne das Programm neu zu kompelieren.

    MfG
    Der_Doc

    • Offizieller Beitrag

    Es ist sicher nicht ganz so simpel. Du mußt ja m.M. so vorgehen:
    - ist aktuelles Zeichen eine Silbe?
    - ist aktuelles Zeichen + folgende(s) Zeichen eine andere Silbe?
    Denn ich vermute, dass dort einige Kombinationen möglich sind. Somit mußt du auch ein Kriterium finden, ob das aktuelle Zeichen oder die Kombination mit Folgezeichen die eigentliche Silbe darstellen.
    Zum Arbeiten wäre hier ein Scripting.Dictionary-Objekt empfehlenswert.

  • Kombinationen gibt es nicht viele also gibt es nicht viel zu beachten allerdings hab ich leider keine Ahnung was ein Scripting.Dictionary-Objekt ist ._.