String trennen

  • Also ich haben diesen String,
    D:\Spiele\FIFA 2008\bild.jpg
    und ich will ihn so filtern, dass nur noch bild.jpg angezeigt wird.
    Es soll nach dem dem letztenn \ getrennt werden, ich weis nicht wie viele / es giebt und nicht wie das Bild heist.
    Hoffe jemand kann mir weiterhelfen
    gruß energy

    • Offizieller Beitrag

    Trennen von rechts machst du indem du negatives Vorzeichen angibst um die Position des letzten '\' zu finden.
    Edit: Mist, es wird kein Code angezeigt. OK - dann unformatiert:

    Code
    $path = 'D:\Spiele\FIFA 2008\bild.jpg'
    $pos = StringInStr($path, '\', 1, -1)
    $name = StringRight($path, StringLen($path)-$pos)
  • Hallo!

    aus früheren autoi-Zeiten

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; basename
    ; gibt den Dateinamen einzeln zurück oder im Fehlerfalle ".."

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

    Func _basename($FileLongPath)

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

    if FileExists($FileLongPath) then
    $pruef1=_checkdirectory($FileLongPath)
    if $pruef1=1 then
    Return ".."
    exit
    EndIf

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

    $teile=StringSplit($FileLongPath,"\")
    $anz=$teile[0]
    Return $teile[$anz]

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

    Else
    Return ".."

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

    Endif

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

    EndFunc

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

    ; Test ob Datei
    ; Return 0 ist kein Verzeichnis oder Fehler
    ; Return 1 ist ein Verzeichnis

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

    Func _checkdirectory($File)

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

    $attrib=FileGetAttrib($File)
    If @error Then
    ; MsgBox(4096,"Error", "Could not obtain attributes.")
    Return 0
    Else
    If StringInStr($attrib, "D") Then
    Return 1
    Else
    Return 0
    EndIf
    EndIf

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

    EndFunc

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

    Gruss

    German

  • Das hier hab ich mal schnell aus der Hilfe übernommen ;) :

    C
    #include <file.au3>
    #include <array.au3>
    Dim $szDrive, $szDir, $szFName, $szExt
    $TestPath = _PathSplit("D:\Spiele\FIFA 2008\bild.jpg",  $szDrive,  $szDir,  $szFName,  $szExt)
    _ArrayDisplay($TestPath,"Demo  _PathSplit()")
    • Offizieller Beitrag

    LOL
    Unter Codeoptimierung verstehe ich eigentlich Vereinfachung und Verkürzung des Codes.
    Schon interessant, wie mein 2-Zeiler, den ich der besseren Verständlichkeit wegen auf 3 Zeilen gestreckt habe, hier 'optimiert' wird :D
    Also seis denn: hier die ganz-kurz-Fassung

    [autoit]

    $path = 'D:\Spiele\FIFA 2008\bild.jpg'
    $name = StringRight($path, StringLen($path) - (StringInStr($path, '\', 1, -1)) )

    [/autoit]