String bis zu einem speziellen Zeichen verkürzen?

  • Gibt es ne Möglich keit einen String bis zu einem spezielen Zeichen zu verkürzen?
    zB.

    [autoit]

    @ScriptDir & "\XXX\XXX\XXX\XXX"

    [/autoit]


    ich möchte den string aber verkürzen auf:

    [autoit]

    @ScriptDir & "\XXX\XXX\XXX"

    [/autoit]
  • Ich hatte da auch rumgebastelt.
    Vieleicht hilft Dir das ja auf die Sprünge.

    Spoiler anzeigen
    [autoit]

    $test=_MSI_installer("Text\test.exe")

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

    MsgBox(0,"",$test)

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

    Func _MSI_installer($msi_input)

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

    $StrLen = StringLen($msi_input)
    $StrInStr = StringInStr($msi_input, "\")
    $Teilung_Str = $StrLen - $StrInStr + 1
    $Rechts_Abschneiden = StringTrimRight($msi_input, $Teilung_Str)
    $Rechts_Abschneiden_K_Leerz = StringStripWS($Rechts_Abschneiden, 8)
    $Links_Abschneiden = StringTrimLeft($msi_input, $StrInStr - 1)

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

    Return $Links_Abschneiden

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

    EndFunc

    [/autoit]

    Gruß Jan

  • Ich weiß nicht was du willst:D
    Wenn du den Dateinamen haben willst dann

    Spoiler anzeigen
    [autoit]

    Global $test = _MSI_installer("Text\test.exe")

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

    MsgBox(0,"",$test)

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

    Func _MSI_installer($msi_input)
    $string = StringSplit($msi_input, "\")
    Return $string[UBound($string) - 1]
    EndFunc

    [/autoit]

    Padmak

  • Ich denke er will den ORdnernamen.


    C:\Test\Benne\AutoIt\Test.txt

    Er will

    C:\Test\Benne\AutoIt

    • Offizieller Beitrag

    Das Pattern:
    .* = beliebiges Zeichen, beliebig oft
    \\ = Backslash wird gefunden
    die Klammern um diese beiden ist wichtig für die Back-Referenz beim Replace
    das Gute an dem Pattern ist, dass StringReg so "gefrässig" ist und sich mit .* alles schnappt, bis zum letzten Backslash (ist hier so gewollt).
    dem .* außerhalb der Klammern bleibt dann nur noch der Dateiname inkl. Endung

    Das "$1" im Replace ist ein "Platzhalter" für den ersten Klammerausdruck im Pattern.

    Der komplette String wird also durch den Ausdruck in den Klammern ersetzt.