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?

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

    3 Mal editiert, zuletzt von Alina () 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 ()

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

    Danke.

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

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