Les Snippets

Connexion

Supprimer les doublons d'un tableau de chaines

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 07/07/2008 08:23:59 et initié par PCPT [Liste]
Vue : 8806
Catégorie(s) : Chaîne de caractères
Langages dispo pour ce code :
- VB6, VBA
- PHP 5
- C++
- C# 2.x, C# 3.x
- VB 2005, VB 2008



Langage : VB6 , VBA
Date ajout : 07/07/2008
Posté par PCPT [Liste]
Function RemoveDuplicatedItemsFromArray(ByRef  aArray() As  String) As  Long
'aArray     tableau à dédoublonner, peut être  vide ou non dimentionné, ne doit pas contrenir d'item CHR$(0)
'fonction   retourne le nombre d'items
    Dim asBuff() As String, lCount As Long, i As Long, j As Long, l As Long
    
    If ((Not (Not aArray)) = 0Then lCount = 0 Else lCount = UBound(aArray) - LBound(aArray) + 1
    If lCount Then
        If lCount = Then
'           rien à faire
            RemoveDuplicatedItemsFromArray = 1
        Else
'           travaille en tampon
            asBuff = aArray
            l = LBound(asBuff)
            For i = l To UBound(asBuff) - 1
                For j = i + To UBound(asBuff)
                    If (asBuff(i) = asBuff(j)) Then asBuff(j) =  vbNullChar
                Next j
            Next i
            
'            sauve
            j = l - 1
            For i = l To UBound(asBuff)
                If Not (asBuff(i) = vbNullChar)  Then
                    j = j + 1
                    aArray(j) = asBuff(i)
                End If
            Next i
'           resize +  retour
            ReDim Preserve aArray(l To j)
            RemoveDuplicatedItemsFromArray = UBound(aArray) - l + 1
        End If
    End If
    Erase asBuff
End Function

'---------------------
'EXEMPLE  D'UTILISATION
'---------------------
'
Private Sub Test()
    Dim asResult() As String, i As Integer
    ReDim asResult(To 20)
    For i = To 5
        asResult(i) = "ligne " & i
        asResult(i + 5) = "ligne " & i
        asResult(i + 10) = "ligne " & i
        asResult(i + 15) = "ligne " & i
    Next i
    Debug.Print RemoveDuplicatedItemsFromArray(asResult) & " lignes"
    Debug.Print "========"
    
    For i = LBound(asResult) To UBound(asResult)
        Debug.Print asResult(i)
    Next i
End Sub

Langage : PHP 5
Date ajout : 07/07/2008
Posté par mortalino [Liste]
<?php 
    $aArr = array(1, 2, 3, 1, 2, 3, 1, 2, 3, 4) 
 
    $NoDupes = array_unique($aArr) 
?>
Langage : C++
Date ajout : 22/07/2008
Posté par buno [Liste]
int removeDoublon(vector<string> & liste)
{
    int cpt=0;
    bool bFound=false;
    vector<string> final;
    vector<string>::iterator iterListe, iterFinal;
    // Test de la validité de la liste
    if (liste.empty())
        return cpt;
    // Init de la liste résultat
    final.push_back(*liste.begin());
    for (iterListe=liste.begin()+1; iterListe!=liste.end(); iterListe++)
    {
        // Recherche si ce n'est pas un doublon
        bFound=false;
        for (iterFinal=final.begin(); iterFinal!=final.end() && !bFound; iterFinal++)
        {
            if (0==iterListe->compare(*iterFinal))
            {
                // C'est un doublon, on passe à la chaîne suivante
                cpt++;
                bFound=true;
            }
        }
        if (!bFound)
        {
            // Ce n'est pas un doublon, on l'ajoute à la liste finale
            final.push_back(*iterListe);
        }
    }
    liste=final;
    return cpt;
}

//////////////////////////
// Exemple d'utilisation
//////////////////////////
vector<string>::iterator iter;
vector<string> liste;
liste.push_back("coucou");
liste.push_back("couCou");
liste.push_back("SALUT");
liste.push_back("sAlut");
liste.push_back("coucouuu");
liste.push_back("");
liste.push_back("coucou");
liste.push_back("coucou");
liste.push_back("SALUT");
liste.push_back("SALUTE");
for (iter=liste.begin(); iter!=liste.end(); iter++)
    cout << *iter << " ";
cout << endl;
int cpt=removeDoublon(liste);
cout << cpt << " doublons enleves: ";
for (iter=liste.begin(); iter!=liste.end(); iter++)
    cout << *iter << " ";
cout << endl;

Remarque :
Le test est "case sensitive":
coucou et couCou ne sont pas des doublons
Langage : C# 2.x , C# 3.x
Date ajout : 03/11/2008
Posté par Willi [Liste]
public static string[] RemoveDuplicatedItems(string[] array) 
{ 
    if ((array != null) && (array.Length > 0)) 
    { 
        List<string> arrayTmp = new List<string>(array); 
        arrayTmp.Sort(); 
 
        for (int i = arrayTmp.Count - 1; i > 0; i--) 
        { 
            if (arrayTmp[i].CompareTo(arrayTmp[i - 1]) == 0) 
                arrayTmp.RemoveAt(i); 
        } 
 
        return arrayTmp.ToArray(); 
    } 
    else 
        return null; 
}

Remarque :
string[] uniqueItems=RemoveDuplicatedItems(arrayToFilter);
Langage : VB 2005 , VB 2008
Date ajout : 03/11/2008
Posté par Willi [Liste]
Public Shared Function RemoveDuplicatedItems(ByVal array As String()) As String()
  If Not (array Is Nothing) AndAlso (array.Length > 0) Then
    Dim arrayTmp As New List(Of String)(array)
    arrayTmp.Sort()
    For i As Integer = arrayTmp.Count - 1 to 0 Step -1
      If arrayTmp(i).CompareTo(arrayTmp(i - 1)) = 0 Then
        arrayTmp.RemoveAt(i)
      End If
    Next
    Return arrayTmp.ToArray()
  Else
    Return Nothing
  End If
End Function

Snippets en rapport avec : Tableau, Supprimer, Doublons, Chaines



Codes sources en rapport avec : Tableau, Supprimer, Doublons, Chaines

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIMER UN ÉLÉMENT D'UN TABLEAU
Lorsque vous créez des tableaux dynamiques en VB, vous serez peut-être ammenés à avoir besoin de sup...

{Javascript / DHTML} MOOTABLEAU
Une classe mooTools qui transforme une balise table en un ensemble div/tables qui permet de visualis...

{Visual Basic, VB6, VB.NET, VB 2005} JEU DE PENDU (COUIC 1 DE +)
Lundi, 01 Février 2010 04:58 un petit jeu de pendu réalisé sous vb 2008 express But du jeu : ...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRESSION DES DOUBLONS DANS PLAGE EXCEL
Liminaire : La méthode Range.AdvancedFilter Action:=xlFilterInPlace, Unique:=True proposée par ...

{Delphi} TABLEAU DE BOUTONS DYNAMIQUES (AGENDA)
L'agenda par lui même n'a que très peu d'intérêt et ne constitue pas le but de cet envoi. Le thème ...

{PHP} EXÉCUTER DES REQUETE STYLE SQL SUR UN ARRAY
La classe myArray, pour l'instant en version "j'ai codé comme un cochon" permet l'exécution de requê...

{Javascript / DHTML} JEU DE COULEURS DANS UN TABLEAU À 3 DIMENSION
Un tableau à 3 dimensions(Plusieurs tableau de 2 dimensions) des couleurs existante sur un PC. Jusqu...

{Visual Basic, VB6, VB.NET, VB 2005} LE 421 AVEC CLASSEMENT V2
le 421 avec prise en compte du classement ici fonction lancer de dé select case streamreader cod...

{Visual Basic, VB6, VB.NET, VB 2005} EXPORT TABLEAU EXCEL EN BBCODE
Petite source en vba excel permettant d'exporter le tableau Excel en BBcode (tableau basic, seul l'é...