• Es ist keine sehr große UDF, aber für Maps in Form von
    1,2,3
    1,5,2
    9,4,2
    ist es nützlich.

    UDF:

    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringgetStr()
    ; Description ...: Gets a String out of String (e.g.: "1,2,3,4,5")
    ; Syntax.........: _StringgetStr($String,$Search,$index)
    ; Parameters ....: $String - String to search in
    ; $Search - Character (e.g.: ",")
    ; $index - What Stringnumber should be returned
    ; Return values .: String of index with search
    ; Author ........: TheShadowAE
    ; ===============================================================================================================================
    Func _StringgetStr($String,$Search,$index)
    $old=0
    $mom=0
    $isindex=0
    For $x=0 To $index
    $isindex=$isindex+1
    $old=$mom
    $mom=StringInStr($String,$Search,0,1,$old+1)
    If $mom=0 Or $isindex=$index Then ExitLoop
    Next
    If $mom=0 And $isindex<>$index Then
    Return ""
    ElseIf $mom=0 And $isindex=$index Then
    $restring=StringMid($String,$old+1)
    Return $restring
    Else
    $restring=StringMid($String,$old+1,$mom-$old-1)
    Return $restring
    EndIf
    EndFunc

    [/autoit]

    Beispiel:

    [autoit]

    #include <_stringgetstr.au3>
    msgbox(0,"",_StringgetStr("1,2,3,4,5",",",1))
    msgbox(0,"",_StringgetStr("1,2,3,4,5",",",2))
    msgbox(0,"",_StringgetStr("1,2,3,4,5",",",3))
    msgbox(0,"",_StringgetStr("1,2,3,4,5",",",4))
    msgbox(0,"",_StringgetStr("1,2,3,4,5",",",5))

    [/autoit]

    Ich weiß leider auch nicht, ob es sowas schon z.B. in der String.au3 gibt.

  • Muss dich leider enttäuschen

    [autoit]

    StringInStr

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Damit brauch man noch ein Stringmid um bei 1,2,3,4,5 die 3 herauszufischen.
    Verdammt erstens eine viel zu lange Funktion und zweitens eine unnötige.
    Warum fallen mir immer nur solche Sachen ein die schon da sind, die ich aber nicht kenne.

  • Geht auch kürzer ^^

    [autoit]

    MsgBox(0,"",_StringgetStr("1,2,3,4,5",",",1,1))
    MsgBox(0,"",_StringgetStr("1,2,3,4,5",",",1,2))
    MsgBox(0,"",_StringgetStr("1,2,3,4,5",",",1,3))

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

    Func _StringgetStr($sString,$sSearch,$iLength=1,$iOccurence=1)
    $aRet = StringRegExp($sString,$sSearch&"(.{"&$iLength&"})",3)
    If Not @error AND UBound($aRet) >= $iOccurence Then Return $aRet[$iOccurence-1]
    EndFunc

    [/autoit]
  • StringREgExp ist Völlig unnötig ;) Das sollte um einiges schneller sein:

    [autoit]

    Func _StringGetStr($sString,$sSearch,$iLength=1,$fCaseSense=False, $iOccurence=1)
    Local $inStr = StringInStr($sString, $sSearch, $fCaseSense, $iOccurence)
    If Not $inStr Then Return SetError(1,0,'')
    Return StringMid($sString, $inStr+1, $iLength)
    EndFunc

    [/autoit]