Enlever les mots dupliqués dans une chaîne de caractère en C#

 

Génerallement dans chaque phrase, il y a des mots qui sont répétés. La phrase n'aura donc plus de sens si vous vous en priver.

Ce genre de traitement n'est d'ailleurs pas courant mais si pour une raison ou une autre vous sentez le besoin de supprimer un mot de votre chaine de caractère, en gardant la premiere occurence ou non, alors veuillez lire cet article jusqu'au bout.
Ne me demandez surtout pas dans quelle circonstance moi j'ai eu à l'utiliser :)  

Voila un apercu de ce que vous aurez au final

Entrée:  Lire et suivre et ensuite appliquer
Sortie: Lire et suivre ensuite appliquer
Note:   [Le second mot 'et' a été enlevé]

Pour en arriver là, nous allons utiliser une structure de données tel qu'un Dictionnaire. Nous traiterons ensuite les mots dans une boucle, et nous aurons besoin de vérifier chaque mot contre tous les mots déjà rencontrés.
Remarque:
L'utilisation de deux listes se traduirait par une complexité plus élevée, ce qui pourrait rendre votre programme inutile.
 
 
using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    static void Main()
    {
    string s = "Lire et suivre et ensuite appliquer";
    Console.WriteLine(s);
    Console.WriteLine(RemoveDuplicateWords(s)); 
     
    }

    static public string RemoveDuplicateWords(string v)
    {
    // 1
    // Garder les mots traités dans un dictionnaire.
    var d = new Dictionary();

    // 2
    // une chaine de caractère  StringBuilder.
    StringBuilder b = new StringBuilder();

    // 3
    // Diviser les entrées et gérer les espaces et la ponctuation
    string[] a = v.Split(new char[] { ' ', ',', ';', '.' },
        StringSplitOptions.RemoveEmptyEntries);

    // 4
    // Boucle avec chaque entrée
    foreach (string current in a)
    {
        // 5
        // Le convertir en minuscule pour eviter la 'case'.
        string lower = current.ToLower();

        // 6
        // Si le mot n'a jamais été rencontré,
        // ajouter au resultat.
        if (!d.ContainsKey(lower))
        {
        b.Append(current).Append(' ');
        d.Add(lower, true);
        }
    }
    // 7
    // Retourne un resultat clean, doublons supprimés :)
    return b.ToString().Trim();
    }
}

Sortie

Lire et suivre et ensuite appliquer
    Lire et suivre ensuite appliquer

Explication

Dans cet exemple, on a concu une fonction RemoveDuplicateWords, qui verifie la phrase passée en paramaètre. Vous pouvez coller ce code dans votre nouveau programme C #. Il nécessite une version plus récente du .NET Framework.

Connaissez-vous Split?

Elle permet de délimiter les phrases ou de les diviser avec un critère donné, dans le cas présent elle nous permet de faire face à la ponctuation. Sinon, la ponctuation serait considéré comme une partie du mot.

Copyright 2016 SIR JOJO | Designed and Developed By ELTIMAR