Problem mit StringReplace()

  • HiHo Ich mal wieder :D

    Ich habn Problem (wie der Titel schon sagt) mit StringReplace().
    Volgendes...
    Es funktioniert bis zu einer Gewissen Stelle
    Hier mal Script

    Spoiler anzeigen
    [autoit]


    $FilePath = FileOpenDialog('Playlist Importieren','','(*.wpl)|(*.pls)|(*.m3u)|(*.xspf)')
    If StringRight($FilePath, 4) = ".wpl" Then
    FileOpen($FilePath)
    $FRL = FileReadLine($FilePath,12)
    $nPath = StringRegExpReplace($FRL,' <media src="','')
    $nnPath = StringReplace($nPath,'/>','',-1)
    FileClose($FilePath)
    MsgBox(0,'File line',$nPath)
    EndIf

    [/autoit]


    Das ganze ist hast in ner *.wpl datei und die Zeile 12 ist IMMER die erste File angabe mit Pfad
    etwa So

    Spoiler anzeigen


    <media src="E:\03_Eigene Music\969\The Beginning Of Chaos\The Beginning.mp3"/>


    Das entfernen von # <media src="# Funktioniert mit StringRegExpReplace Tadelose...
    Output sieht dan so aus #E:\03_Eigene Music\969\The Beginning Of Chaos\The Beginning.mp3"/>#
    aber sobald ich bei

    [autoit]


    $nPath = StringRegExpReplace($FRL,' <media src="','')

    [/autoit]


    ein weiteres zeichen hinzufüge, Schmeisst er mir die ganzen angaben übrn haufen und tut Nichts mehr...
    das StringReplace() hab ich extra noch hinzugefügt weil der bei ner Negativ Zahl von Rechts Nach Links Sucht...aber auch das will nicht -.-
    Das Ganze sollte am Ende so aussehen
    #E:\03_Eigene Music\969\The Beginning Of Chaos\The Beginning#

    Skilkor

    Einmal editiert, zuletzt von Skilkor (13. März 2011 um 07:48)

  • Ich habe zwar fast keine Ahnung von RegEx., aber ich glaube so sollte es klappen (kann es leider imoment nicht testen)

    [autoit]


    $nPath = StringRegExp('<media src="E:\03_Eigene Music\969\The Beginning Of Chaos\The Beginning.mp3"/>','[A-Za-z0-9_:.\\ ]+',3)
    $finalPath = $nPath[1]

    [/autoit]
  • Sofern sich das Muster der Formatierung (= media tag) nicht ändert und immer ne mp3 ist (kann man ja leicht erweitern), dann sollte folgendes klappen:

    [autoit]

    $input = ' <media src="E:\03_Eigene Music\969\The Beginning Of Chaos\The Beginning.mp3"/>'
    ;funktioniert mit und ohne leerzeichen am anfang

    [/autoit][autoit][/autoit][autoit]

    $output = StringRegExpReplace($input, '([\t\s]*<media\ssrc=")([^"]+)\.mp3"/>', "#$2#")
    MsgBox(0, "Resultat", $input & @CRLF & @CRLF & $output)

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!