Functions > String >


StringSplit

Découpe une chaîne en tableau de sous-chaînes selon des délimiteurs donnés.

StringSplit ( "string", "delimiters" [, flag = 0] )

Paramètres

string La chaîne d'origine.
delimiters Un ou plusieurs caractères à utiliser comme délimiteurs (sensible à la casse).
flag [optionnel] Modifie le fonctionnement de la fonction, ajoutez plusieurs valeurs de flag ensemble si besoin:
    $STR_CHRSPLIT (0) = chaque caractère dans la chaîne des délimiteurs marquera la coupure de la chaîne (par défaut).
    $STR_ENTIRESPLIT (1) = la chaîne entière des délimiteurs est nécessaire pour marquer la coupure.
    $STR_NOCOUNT (2) = désactive le comptage du nombre d'éléments du tableau dans l'élément [0] - le tableau retourné devient alors de base 0 (vous devrez utiliser UBound() pour obtenir la taille du tableau dans ce cas).

Les constantes sont définies dans "StringConstants.au3".

Valeur de retour

Retourne un tableau, par défaut le premier élément [0] contient le nombre de chaînes retournées, les éléments qui suivent [1], [2],... contiennent les chaînes découpées. Si le paramètre 'flag' est défini à $STR_NOCOUNT(2), alors le nombre d'éléments n'est pas retourné dans le premier élément.

Si aucun délimiteur n'est trouvé, le flag @error est mis à 1:
Si 'flag' n'est pas égal à $STR_NOCOUNT, l'élément [0] est mis à 1 et la chaîne complète est retournée en position [1].
Si 'flag' est égal à $STR_NOCOUNT, la chaîne complète est retournée en position [0].

Remarques

Si vous utilisez une chaîne vide "" comme délimiteur, chaque caractère sera retourné comme un élément.

Si la chaîne des délimiteurs contient plusieurs caractères, le comportement de la fonction dépend du paramètre flag. S'il est défini à $STR_CHRSPLIT la chaîne sera coupée à chaque instance de chaque caractère delimiteur - s'il est défini à $STR_ENTIRESPLIT alors la chaîne sera coupée seulement quand la chaîne entière des délimiteurs sera rencontrée. Voir le second exemple ci-dessous.

Notez que la macro @CRLF est actuellement une chaîne de 2 caractères, aussi si le paramètre flag est défini à $STR_ENTIRESPLIT des lignes vides seront générées puisque la chaîne sera coupée à la fois par @CR et @LF.

StringSplit() est une très bonne alternative à StringInStr() et comme moyen de remplissage d'un tableau.

En relation

StringInStr, StringLeft, StringLen, StringLower, StringMid, StringRight, StringTrimLeft, StringTrimRight, StringUpper

Exemples

Exemple 1

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $aDays = StringSplit("Mon,Tues,Wed,Thur,Fri,Sat,Sun", ",") ;Diviser la chaîne de jour en utilisant le délimiteur "," et la valeur de flag par défaut.
    #cs
        Le tableau retourné contiendra les valeurs suivantes:
        $aDays[1] = "Mon"
        $aDays[2] = "Tues"
        $aDays[3] = "Wed"
        ...
        $aDays[7] = "Sun"
    #ce

    For $i = 1 To $aDays[0] ; Boucle dans le tableau retourné par StringSplit pour afficher les valeurs individuelles.
        MsgBox($MB_SYSTEMMODAL, "", "$aDays[" & $i & "] - " & $aDays[$i])
    Next
EndFunc   ;==>Example


Exemple 2

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    Local $sText = "Cette\nligne\ncontient\ndes sauts de ligne style C." ; Définit une variable avec une chaîne de texte.
    Local $aArray = StringSplit($sText, '\n', $STR_ENTIRESPLIT) ; Passe la variable à StringSplit en utilisant le séparateur "\n".
    ; Notez que le paramètre de flag est défini sur $STR_ENTIRESPLIT (1) autrement il couperait à \ ou  n.
    #cs
        Le tableau retourné contiendra les valeurs suivantes:
        $aArray[1] = "Cette"
        $aArray[2] = "ligne"
        $aArray[2] = "contient"
        $aArray[4] = "des sauts de ligne style C."
    #ce

    For $i = 1 To $aArray[0] ; Boucle dans le tableau retourné par StringSplit pour afficher les valeurs des éléments
        MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i])
    Next
EndFunc   ;==>Example


Exemple 3

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    Local $sText = "Cette\nligne\ncontient\ndes sauts de ligne style C." ; Définit une variable avec une chaîne de texte.

    ; Passe la variable à StringSplit en utilisant le séparateur "\n".
    ; Notez que le paramètre flag est défini sur $STR_ENTIRESPLIT (1) autrement la chaîne serait divisée à \ et à n.
    MsgBox($MB_SYSTEMMODAL, "", StringSplit($sText, '\n', $STR_ENTIRESPLIT)[2]) ; Accéde directement à un élément du tableau à l'aide d'un index.
    #cs
        Un tableau temporaire interne est utilisé pour retourner une chaîne qui peut contenir une des valeurs suivantes:
        $aArray[1] = "Cette"
        $aArray[2] = "ligne"
        $aArray[2] = "contient"
        $aArray[4] = "des sauts de ligne style C."
    #ce
EndFunc   ;==>Example