Les Snippets

Connexion

Extraction de chaine de caractères à partir d'une occurence ("Separator")

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 21/04/2006 22:38:22 et initié par JMO [Liste]
Date de mise à jour : 05/08/2006 13:41:12
Vue : 30363
Catégorie(s) : Chaîne de caractères
Langages dispo pour ce code :
- VBScript
- VB6
- PHP 3, PHP 4, PHP 5
- C# 1.x, C# 2.x
- Java
- Javascript
- C
- Delphi 5
- SQL, SQL 2005
- ActionScript Flash
- Windev
- Python



Langage : VBScript
Date ajout : 21/04/2006
Posté par JMO [Liste]
DateMAJ : 22/04/2006

'Extraction de chaine de caractères à partir d'une occurence ("Separator")
MyString = "1;21-5;6;7*;8-95;200;4+1" 
     

MySeparator = ";"                                        'occurence à rechercher

MyArray = Split(MyString, MySeparator, -1, 1)  'creation du tableau

For i = 0 to UBound(MyArray)                         'visu de chaque item du tableau
    Resultat = Resultat & vbCrLf & " item=" & i & "    " & MyArray(i) 
Next

MsgBox Resultat                                           'Affichage de tous les item

Langage : VB6
Date ajout : 22/04/2006
Posté par PCPT [Liste]
Private Function GetSplitData(ByVal sSrc As StringByRef aArray() As VariantOptional ByVal bLongValue As Boolean = FalseOptional ByRef sSepar As String = ";") As Long 
    Dim aString() As String 
    aString = Split(sSrc, sSepar) 
    If UBound(aString) = 0 Then 
        GetSplitData = 0 
    Else 
        Dim i As Long 
        ReDim aArray(UBound(aString)) 
        If bLongValue Then 
            For i = 0 To UBound(aString) 
                aArray(i) = Val(aString(i)) 
            Next i 
        Else 
            For i = 0 To UBound(aString) 
                aArray(i) = aString(i) 
            Next i 
        End If 
        GetSplitData = UBound(aString) + 1 
        Erase aString 
    End If 
End Function 


'   EXEMPLE D'UTILISATION
'
Private Sub Form_Load() 
    Const sSample1 As String = "voici;une;phrase;séparée;par;des;point-virgules" 
    Const sSample2 As String = "1;215;6;7;895;200;41" 
    Dim aResult() As Variant, lRet As Long, i As Long 
    Dim sMess As String, lSum As Long 
    lRet = GetSplitData(sSample1, aResult()) 
    sMess = sSample1 & vbCrLf 
    If lRet > 0 Then 
        For i = 0 To lRet - 1 
            sMess = sMess & vbCrLf & aResult(i) 
        Next i 
        MsgBox sMess 
    End If 

    lRet = GetSplitData(sSample2, aResult(), True) 
    sMess = sSample2 & vbCrLf 
    lSum = 0 
    If lRet > 0 Then 
        For i = 0 To lRet - 1 
            sMess = sMess & vbCrLf & CStr(aResult(i)) 
            lSum = lSum + aResult(i) 
        Next i 
        MsgBox sMess & vbCrLf & "total = " & CStr(lSum) 
    End If 
    Unload Me 
End Sub 

Langage : PHP 3 , PHP 4 , PHP 5
Date ajout : 24/04/2006
Posté par malalam [Liste]
<?php
$sString = '1;21-5;6;7*;8-95;200;4+1';
$aTableau = explode (';', $sString);
?>
Langage : C# 1.x , C# 2.x
Date ajout : 28/04/2006
Posté par Bidou [Liste]

// Tableau qui contient les charactères sur lesquels on split
char[] splitters = new char[] { ';', '-' }; 
// Chaîne à splitter
string myStr = "1;21-5;6;7*;8-95;200;4+1"; 
// Chaque partie est mises dans une cellule du tableau
string[] split = myStr.Split(splitters); 
// Résultat : 1  21  5  6  7*  8  95  200  4+1

Langage : Java
Date ajout : 01/05/2006
Posté par nolii [Liste]
String sString;
String[] Tableau;
 


sString = "1;21-5;6;7*;8-95;200;4+1";
Tableau = sString.split(";"); 
Langage : Javascript
Date ajout : 04/05/2006
Posté par Arglanir [Liste]
var separator = ";";
var string = "1;2;3-4;6";
var array = string.split(separator );

Langage : C
Date ajout : 04/06/2006
Posté par katsankat [Liste]
#include <stdio.h>
#include <string.h>
int main ()
{
  char s[] ="1;21-5;6;7*;8-95;200;4+1";
  char* delimiteur = ";" ; 
 
  char* p = strtok (s, delimiteur); 
  while (p != NULL) 
  { 
    printf ("[%s]\n",p); 
    p = strtok (NULL, delimiteur); 
  } 
 
  return 0; 
}

Langage : Delphi 5
Date ajout : 05/08/2006
Posté par f0xi [Liste]
DateMAJ : 05/08/2006
{
- perf 78..94 ms/100KCalls :: ~0.00086ms/Call
- Str : chaine delimitée 
- Delimiter : delimiteur a longeur variable (chaine ou caractere)
- Index : index d'interval 1..n de la sous-chaine a extraire
}
function GetStrPart(const Str, Delimiter: String; const Index: cardinal = 1): String;
var I,P1,P2 : integer;
begin
  Result := '';
  if (posex(Delimiter,Str[1]) = 1) and (Index <= 1) then exit;
  P1 := 1;
  for I := 1 to Index-1 do begin
      P1 := posex(Delimiter, Str, P1);
      if P1 = 0 then exit
      else P1 := P1 + length(Delimiter);
  end;
  P2 := posex(Delimiter, Str, P1);
  if P2 = 0 then P2 := length(Str) + 1;
  Result := copy(Str, P1, P2 - P1);
end;
Remarque :
- declarez l'unité StrUtils dans les uses.
Langage : SQL , SQL 2005
Date ajout : 30/03/2007
Posté par pifou25 [Liste]
/*********************************************************************************
Fonction d'éclatement d'une chaine de caractère en une table en fonction d'un séparateur
-----------------------------------------------------------------------------------
@PInStrSource :        Chaine de caractère source
@pInChrSeparator :    séparateur
**********************************************************************************/
CREATE FUNCTION [dbo].Split(
   @PInStrSource varchar(8000) = NULL, @pInChrSeparator char(1) = ';'
 )
 RETURNS @ARRAY TABLE (ItemValue VARCHAR(1000))
AS
BEGIN
DECLARE @CurrentStr varchar(2000)
DECLARE @ItemStr varchar(200)
SET @CurrentStr = @PInStrSource
WHILE Datalength(@CurrentStr) > 0
BEGIN
    IF CHARINDEX(@pInChrSeparator, @CurrentStr,1) > 0 
    BEGIN
        SET @ItemStr = SUBSTRING (@CurrentStr, 1, CHARINDEX(@pInChrSeparator, @CurrentStr,1) - 1)
        SET @CurrentStr = SUBSTRING (@CurrentStr, CHARINDEX(@pInChrSeparator,
            @CurrentStr,1) + 1, (Datalength(@CurrentStr) - CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1))
        INSERT @ARRAY (ItemValue) VALUES (@ItemStr)
    END
    ELSE
    BEGIN                
        INSERT @ARRAY (ItemValue) VALUES (@CurrentStr)    
        BREAK;
    END 
END
RETURN
END
Remarque :
La fonction split n'existe pas sur SQL server et il peut être très pratique de l'utiliser, à travers une table: exemple:

declare @IdSelProgr AS varchar(8000)
set @IdSelProgr = '1;2;3;4;5'
CREATE TABLE #tmp_SelProg (SelectedProg VARCHAR(10))
INSERT INTO #tmp_SelProg SELECT dbo.Split( @IdSelProgr)
...
Langage : ActionScript Flash
Date ajout : 06/04/2007
Posté par Girou [Liste]
var MyString:String = "1;21-5;6;7*;8-95;200;4+1";
var MySeparator:String = ";";
var my_array:Array = MyString.split(MySeparator);
for (var i = 0; i<my_array.length; i++) {
     trace(my_array[i]);
}

Langage : Windev
Date ajout : 11/05/2007
Posté par drcharly93 [Liste]
sString est une chaîne = "1;21-5;6;7*;8-95;200;4+1";
sVal est une chaîne
sResultat est une  chaîne
i est un entier
POUR TOUTE CHAINE sVal DE sString SEPAREE PAR ";"
    i++
    sResultat +=    sVal + RC
FIN
Info(sResultat)
Langage : Python
Date ajout : 19/12/2007
Posté par 0x586e [Liste]
f = lambda s,d=';': s.split(d)

Remarque :
Utilisation :
f(string[,separator])
Exemple :
print f('1;21-5;5;6;7*;8-95;200:4+1')
Affichera : ['1', '21-5', '5', '6', '7*', '8-95', '200', '4+1']

Snippets en rapport avec : Occurences, Extraire, Séparateur, Extraction, Split



Codes sources en rapport avec : Occurences, Extraire, Séparateur, Extraction, Split

{JAVA / J2EE} JFIFEXTRACT
Cette appli en ligne de commande permet d'extraire les images jpeg (format JFIF) de différents types...

{Visual Basic, VB6, VB.NET, VB 2005} GENERATEUR D AUTO EXTRACTIBLE EN VB6
Cette source permet de générer un programme auto extracteur de fichiers en vb6. Elle comprend le pro...

{PHP} EXTRACTEUR DE VARIABLES DE FORMULAIRES
Ça arrive parfois d'avoir un formulaire avec beaucoup de variables et reprendre chaque variable à tr...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRAIRE LE TEXTE DES FENETRES D'APPLICATIONS TIERCES (LISTBOX, LISTVIEW, TEXTBOXES, ...)
une mini source mais assez utile, dans certains cas... cas concrêt: j'ai une appli au boulot qui...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION CODE HTML, EDITION DYNAMIQUE DE FICHIER HTML (MARCHE EN VB6)
A plusieurs reprises, j'ai trouvé des questions sur le forum portant sur la possibilité d'extraire l...

{Delphi} DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN VB
Découpe une chaîne délimitée en ses éléments pour remplir un tableau dynamique passé en paramètre. U...

{Delphi} FONCTION SPLIT
Du fait que les fonctions Split que j'ai trouvé sur le web ne marchait pas correctement, j'ai décidé...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION AUDIO FLV VERS MP3
[mode hypocrite=on] Votre radio internet préférée vous propose une écoute de la musique en streamin...

{Visual Basic, VB6, VB.NET, VB 2005} IMPORTER UN FICHIET TXT ET LE METTRE DANS UNE BASE DE DONNÉE
ce code permet de choisir n'importe quel fichier txt dans le pc a condition qu'il soit avec ";" comm...

{Visual Basic, VB6, VB.NET, VB 2005} MANIPULATION FICHIER EXECUTABLE
Comment ajouter des données de plus dans un fichier exécutable ? c'est comme winzip, il le fait ave...