Ausgabe bei StringRegExpReplace

  • Ich möchte mit StringRegExpReplace eine Jahreszahl in Klammern ersetzen durch die gleiche Jahreszahl ohne Klammern. Z. B. (2005) zu 2005. Nur die Klammern allein kann ich nicht ersetzen, da diese im gleichen String nochmal vorkommen.
    Bei der Ausgabe besteht das Problem, dass der entsprechende Teil des Eingabewertes nicht entsprechend wieder ausgegeben wird. $0 gibt nur den ganzen Eingabewert wieder aus (mit Klammern). Gibt es eine Möglichkeit das Problem zu lösen, z. B. dadurch, dass man das 2. bis 5. Zeichen des Eingabewertes wieder ausgibt?

    [autoit]

    $var2 = StringRegExpReplace($var1, "\(20\d\d\)", "20..")

    [/autoit]

    Einmal editiert, zuletzt von mkk (9. März 2008 um 21:45)

  • Gibt uns mal etwas mehr von deinem Code, denn ohne $var1 wirds etwas schwer.

    Zitat

    Gibt es eine Möglichkeit das Problem zu lösen, z. B. dadurch, dass man das 2. bis 5. Zeichen des Eingabewertes wieder ausgibt?


    mit stringleft kannst du dir die ersten 5 ausgeben lassen, und mit stringtrimleft den ersten wegschneiden.

  • $var1 ist sehr unterschiedlich. Es könnte z. B. so aussehen:

    "Name (ABC) en-de (2005) Zusatz"

    (20xx) befindet sich an wechselnden Positionen. Deshalb funktioniert stringtrim usw. leider nicht.

  • Das bringt aber nicht das beabsichtigte Ergebnis.

    Aus
    "Name (ABC) en-de (2005) Zusatz"
    soll
    "Name (ABC) en-de 2005 Zusatz"
    werden.

    Wobei 2005 irgendeine Jahreszahl sein kann.
    StringRegExpReplace kommt fast hin, nur kann $0 scheinbar nicht in Einzelzeichen aufgeteilt werden.

    [autoit]

    $var2 = StringRegExpReplace($var1, "\(20\d\d\)", "$0")

    [/autoit]


    So werden die Klammern wieder mit ausgegeben, statt nur die jeweilige Jahreszahl.

    • Offizieller Beitrag

    So wird ein Schuh draus:

    [autoit]

    $var2 = StringRegExpReplace($var1, "\((20\d\d)\)", "$1"))

    [/autoit]