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: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    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)

    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: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • 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)