Wie ersetze ich Wörter in Strings?

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    Wie ersetze ich Wörter in Strings?

    Hallo,
    Ich möchte gern "style="background-color:<Wert variabel>;"" aus einer Zeile entfernen, wo noch was anderes steht.
    Wenn ich das so mache:

    C#-Quellcode

    1. codeBox.Text = codeBox.Text.Replace("style=\"background-color:#000000;\", null);
    ersetzt das Programm ja nur, wenn der Wert #000000 ist.

    Wie kann ich den String variabel ersetzen?
    Am einfachsten finde ich in so nem Fall, Regex zu verwenden: Das ist eine Art Sprache, mit der man beschreiben kann, wie ein String aussieht, den man matchen/ersetzen möchte. In diesem Fall willst du ja ne 6-stellige hexadezimale Farbe matchen, also 6 Zeichen, die jeweils entweder eine Ziffer oder A-F sind. Das sähe in Regex so aus: ​[0-9a-fa-F] (ein Zeichen aus der Menge ​0-9 + ​a-f + ​A-F). Da du 6 solche Stellen willst, matcht du das 6 Mal, also ​[0-9a-fa-F][0-9a-fa-F][0-9a-fa-F][0-9a-fa-F][0-9a-fa-F][0-9a-fa-F] oder kurz ​[0-9a-fa-F]{6}. Jetzt noch den Rest hinzufügen, dann hast du dein Pattern: ​style=\"background-color:#[0-9a-fa-F]{6};\". Dann noch mit ​Regex.Replace() (Beispiel z.B. hier: dotnetperls.com/regex-replace-vbnet) dieses Pattern mit nem leeren String ersetzen und fertig.

    LeonPro12 schrieb:

    style=\"background-color:#......;\"


    Das funktioniert aber nur für alle in Hex angegebenen Farbcodes mit 6 Stellen. ein #000000 kann bspw. auch als #000 auftreten.

    Desweiteren können auch rgb/a-Werte da stehen oder Farben an sich (white/black/blue/...).

    Ich würde sagen ausschlaggebend ist ja nur background-color: <wert>;

    Also würde ich den Regex abändern auf " style=\"background-color:.*;\"" , wobei . jedes Zeichen sein kann und * eine beliebige Anzahl darstellt.

    Abschluss ist dann immer das Semikolon.


    VG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Man sollte greedy Expressions vermeiden (.*), mach den Ausdruck mit ? lazy: " style=\"background-color:.*?;\""
    Und da immer ein Wert erwartet wird, würde ich den * gegen + (1 or more) tauschen: " style=\"background-color:.+?;\""