StringRegExp String finden und erstezten

  • Hallo Leute,

    haben unten stehen Code und der funktioniert nicht so richtig wie ich will.

    In der Datei stehen mehrere Zeilen die so aussehen: style="animation: EJicyqvP_draw 55ms linear 2900ms forwards"

    Hier möchte

    - das der Name nach animation: ausgetauscht wird in Variable $sReplace

    - der Wert vor linear ausgetauscht wird in Variable $zeit

    - der Wert nach linear ausgetauscht wird in Variable $zeit * $i

    Aber igendwie verschluckt sich der Code beim Austauschen der Variable nach liniear.

    Mit den Suchmusterstring stehe ich auf Kriegsfuß "(?U)xxxxxxxx:\h+(\H+)\h", 3) ????

    Könnte man mir helfen?

    Gruß

  • AutoIt
    $sFile = FileRead("test.txt")
    
    $sReplace = "myani"
    $iZeit = 500
    $i = 20
    
    $sFile = StringRegExpReplace($sFile, 'style="animation:\h*\K\w+', $sReplace)
    $sFile = StringRegExpReplace($sFile, '\d+ms\h+linear\h+\d+ms', $iZeit & "ms linear " & $iZeit * $i & "ms")
    
    ConsoleWrite($sFile)
  • Hallo AspirinJunkie,

    vielen Dank, aber warum muss da keine Schleife drum?

    Die Zeit hinter linear sollte immer um eins erhöht werden, so oft wie der Wert vorkommt.

    erster Wert = 0, zweiter Wert = linear 500ms, dritter Wert = linear 1000ms , vierter Wert = 1500ms usw.

    Deswegen habe ich bei meinem Code immer eine Schleife gewählt.

    Wie kann kann ich jetzt mit Deinem Code hier eine Schleife machen.

    Gruß

  • warum muss da keine Schleife drum?

    Die Zeit hinter linear sollte immer um eins erhöht werden, so oft wie der Wert vorkommt.

    Weil du das nicht geschrieben hast.

    Damit wird es nun ein bisschen aufwendiger.
    Ich habe mal für meinen Ansatz den Offset-Parameter von StringRegEx genutzt. Damit kann man sich schrittweise durch den String arbeiten:

  • Ahh, vielen Dank funktioniert.

    Ja aber im Grunde ist das gar nicht mal so toll wenn ich genauer darüber nachdenke.

    SVG ist XML und sollte daher auch entsprechend behandelt werden.
    Folgendes ist die bessere Variante:

  • Du bist der Hammer.

    11 Zeilen Code, Wahnsinn

    Ich muss noch viel viel lernen. An deine Programmierkünste werde ich eh nie herankommen.

    Tausend Dank.

    Ich traue moch garnicht zu fragen, da ich noch was vergessen habe.

    In dem Text muss auch noch der String EJicyqvP ausgewechselt werden in myani_draw und myani_fade.

    Aber ich will es mal versuchen.

    <style data-made-with="vivus-instant">

    @keyframes EJicyqvP_draw {

    to {

    stroke-dashoffset: 0;

    }

    }

    @keyframes EJicyqvP_fade {

    0%,

    94.44444444444444% {

    stroke-opacity: 1;

    }

    to {

    stroke-opacity: 0;

    }

    }

    </style>

  • In dem Text muss auch noch der String EJicyqvP ausgewechselt werden in myani_draw und myani_fade.

    Hm hier muss man eher wieder auf StringRegEx zurück, da der Inhalt ne eigene Struktur aufweist.
    Aber zumindest die Elementauswahl kann man über XML-Funktionen lösen: