Functions > String >


StringSplit

D�coupe une cha�ne en tableau de sous-cha�nes selon des caract�res de coupure.

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