Unregelmäßige Leerstelle

  • Moin

    Ich habe folgenden String als Eingabe (Beispiel):

    ab cd ef gh ij kl mn op qr st uv wx yz 01 23 45 67 89 ij kl mn op qr st uv ab cd ef gh ij kl mn op qr st uv wx yz 01 23 45 67 89 ij kl j7 55 6p

    Nun möchte ich die Ausgabe wie folgt haben:
    sieben "2-er" dem jeweils 1 " " folgt, danach ein "2-er" dem dann zwei " " folgen und danach acht "2-er" mit einem " " und dann ein Zeilenumbruch

    sollte dann so aussehen:

    xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

    xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

    xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

    #ce

    Mit folgendem Script bekomme ich das dopppelte Leerzeichen, nach 8 "2er" und den Zeilenumbruch nach 16 "2er" nicht hin. X/

    Wie ändere ich dieses, das es wie o. g. hin kommt?

    Spoiler anzeigen

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    3 Mal editiert, zuletzt von Alina (21. November 2022 um 17:26) aus folgendem Grund: Fehlerbehebung

  • Nun möchte ich die Ausgabe wie folgt haben:
    sieben "2-er" dem jeweils 1 " " folgt, danach ein "2-er" dem dann zwei " " folgen und danach acht "2-er" mit einem " " und dann ein Zeilenumbruch

    Mit einem StringRegExpReplace bekomme ich es leider nicht hin - darum in zwei Schritten :

    AutoIt
    Global $_Texteingang = 'ab cd ef gh ij kl mn op qr st uv wx yz 01 23 45 67 89 ij kl mn op qr st uv ab cd ef gh ij kl mn op qr st uv wx yz 01 23 45 67 89 ij kl j7 55 6p'
    Global $_Ausgabe
    $_Ausgabe = StringRegExpReplace($_Texteingang, ".{1,24}\K(\s{1}|$)", '  ')
    $_Ausgabe = StringRegExpReplace($_Ausgabe, ".{1,50}\K(\s{1})", @CRLF)
    ConsoleWrite($_Ausgabe & @CRLF)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (21. November 2022 um 22:55)

  • Mit einem StringRegExpReplace bekomme ich es leider nicht hin - darum in zwei Schritten :

    Danke.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Geht auch in einem Schritt (nicht die Leerstellen ersetzen sondern die Inhalte neu aufbauen):

    Code
    $_Ausgabe = StringRegExpReplace($_Texteingang, "(.{24})(.{23})\h?", '\1 \2' & @CRLF)
    ConsoleWrite($_Ausgabe & @CRLF)

    Aber hier muss es nicht unbedingt RegEx sein.
    Wer damit noch fremdelt könnte sich das auch folgendermaßen lösen:

    AutoIt
    $sOut = ""
    For $i = 1 To StringLen($_Texteingang) Step 48
        $sOut &= StringMid($_Texteingang, $i, 24) & " " & StringMid($_Texteingang, $i + 24, 23) & @CRLF
    Next
    ConsoleWrite($sOut & @CRLF)

    Einmal editiert, zuletzt von AspirinJunkie (22. November 2022 um 06:44)