• Offizieller Beitrag

    Hi,
    mal wieder ein kleines Helferlein ;)
    _StringSplitOnce($STRING, $DELIM [, $OCCURENCE=1])
    • Splitten eines Strings am gegebenen Vorkommen des Trennzeichens
    • Standard: erstes Auftreten von links
    • mit negativen Werten wird von rechts gezählt
    • Rückgabe eines Array, Array[0]=links v. Trennzeichen; Array[1]=rechts v. Trennzeichen

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _StringSplitOnce($STRING, $DELIM [, $OCCURENCE=1])
    ; Description: Splits a string on given occurence of delimiter
    ; Parameter(s): $STRING String to split
    ; $DELIM Delimiter
    ; $OCCURENCE Occurence of Delimiter ('-' starts from the right side, Default=1)
    ; Requirement(s):
    ; Return Value(s): Succes Array[0]=left side / Array[1]=right side of splittet string
    ; Failure Set error
    ; @error = 1 No string given
    ; @error = 2 No delimiter given
    ; @error = 3 Delimiter not in string
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;
    ;===============================================================================
    Func _StringSplitOnce($STRING, $DELIM, $OCCURENCE=1)
    If $STRING = '' Then Return SetError(1)
    If $DELIM = '' Then Return SetError(2)
    Local $Out[2]
    Local $len = StringLen($STRING)
    Local $pos = StringInStr($STRING, $DELIM, 1, $OCCURENCE)
    If @error Then Return SetError(3)
    $Out[0] = StringLeft($STRING, $pos-1)
    $Out[1] = StringRight($STRING, $len-$pos)
    Return $Out
    EndFunc ;==>_StringSplitOnce

    [/autoit]
    • Offizieller Beitrag

    Dann gibbet was auf die Mütze wegen erwiesener Dummheit :rofl:

    Edit:
    Nee, mal ernsthaft.
    Dann bekommst du natürlich Fehler = 3, denn 0-tes Auftreten des Trennzeichens ist identisch mit Trennzeichen nicht im String.

  • Hiho :D
    ich hab mal ne Frage, wozu sind die ersten beiden Zeilen in der Funktion?
    Soweit es mir bekannt ist, kommt wenn diese Werte nicht angegeben sind sowieso ein Fataler Error wegen falschem Funktionsaufruf.
    greetz

    • Offizieller Beitrag

    Hi,

    sollte eigentlich auch so aussehen:

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    Global $re = _StringSplitOnce()
    If @error THen MsgBox(16, "Error", "@error = " & @error)
    _ArrayDisplay($re)

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

    Func _StringSplitOnce($string = '', $DELIM = '', $OCCURENCE = 1)
    If $string = '' Then Return SetError(1)
    If $DELIM = '' Then Return SetError(2)
    Local $Out[2]
    Local $len = StringLen($string)
    Local $pos = StringInStr($string, $DELIM, 1, $OCCURENCE)
    If @error Then Return SetError(3)
    $Out[0] = StringLeft($string, $pos - 1)
    $Out[1] = StringRight($string, $len - $pos)
    Return $Out
    EndFunc ;==>_StringSplitOnce

    [/autoit]

    Mega