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 : 16963
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} SUPPRIMER UN ITEM DANS UN TABLEAU EN LE PARCOURANT UNE SEULE FOIS
il s'agit d'une itération permettant de supprimer un élément d'un tableau ne se trouvant pas à la fi...

{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} FORMULAIRE TABLEAU
Ce script permet de créer un Quizz sous forme de tableau. Il faut un peu modifier le code pour pouvo...

{Javascript / DHTML} TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEMANDE
'table_sv' : qu'est-ce que c'est ? Un script JS-dynamique qui permet à l'utilisateur de sélection...

{Visual Basic, VB6, VB.NET, VB 2005} JEU DE MÉMOIRE CLASSIQUE
C'est un jeu de mémoire ou il faut se souvenir de ce qui se cache derrière les cases. Un Timer est ...

{PHP} RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT LE OU LES CHAMPS SUR LESQUELS LA RECHERCHE S'EFFECTUE.
Scripts php qui permettent la recherche des doublons sur une table mysql. Il est nécessaire d'intro...

{Visual Basic, VB6, VB.NET, VB 2005} SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACTÈRES "HH:MM:SS,MMM"
Petite macro word servant à incrémenter toutes les chaînes de caractères codant le temps dans un sou...

{PHP} PAGINATION JAVASCRIPT PHP MYSQL
bonjour Un script qui s'adresse aux débutants qui veulent une pagination facile. Mélange deux deu...

{PHP} CRYPTAGE REVERSIBLE
Je vous propose une classe que j'ai crée il y a un moment pour crypter des mots de passe. Le but est...