Comptage des occurrences de chaque mot dupliqué d’une chaîne à l’aide du dictionnaire en c #

Edit: j’ai élaboré ma question plus .. solutions sont ici pour un mot duplicate Fix .. On m’a demandé de chaque mot duplicate

Je suis un débutant … Peut-être pas une bonne question. ……

c’est de la ficelle

ssortingng str = "this this is is aa ssortingng" 

en entrevue, on m’a demandé de stocker le nombre de chaque mot clé en double dans un dictionnaire générique, puis de les afficher dans l’ordre

par exemple, pas d’occurrence de “est”, le mot clé est 2

liens similaires
: Trouver la plupart des occurrences d’un caractère dans la chaîne C #? il s’agit de trouver du caractère

Trouver des occurrences de mots dans le texte qui sont dans une liste de mots c’est en python

Supprimer les occurrences de mots en double dans une chaîne this en javaScript

Comment utiliser la méthode ssortingng.match pour rechercher plusieurs occurrences du même mot dans une chaîne? Non pertinent

..veuillez suggérer

Assez simple avec LINQ:

 ssortingng str = "this is is a ssortingng"; ssortingng[] words = str.Split(new[] { " " }, SsortingngSplitOptions.RemoveEmptyEnsortinges); 

(Vous pouvez également utiliser Regex.Split(str, @"\W+") comme l’a fait @markieo dans sa réponse. La différence est qu’il détectera également les mots entourés de guillemets et d’autres signes de ponctuation. Merci pour @JonB d’avoir signalé cet aspect. dans les commentaires.)

 Dictionary statistics = words .GroupBy(word => word) .ToDictionary( kvp => kvp.Key, // the word itself is the key kvp => kvp.Count()); // number of occurences is the value int isCount = statistics["is"]; // returns 2 

MODIFIER:

Je poste du code répondant à vos besoins améliorés. Mais pour l’avenir, il suffit de poser une autre question au lieu de modifier celle à laquelle on a répondu!

 // resortingeving all duplicate words ssortingng[] duplicates = statistics .Where(kvp => kvp.Value > 1) .Select(kvp => kvp.Key) .ToArray(); // counting all duplicates and formatting it into a list in the desired output format ssortingng output = Ssortingng.Join( "\n", statistics .Where(kvp => kvp.Value > 1) .Select(kvp => Ssortingng.Format( "count(\"{0}\") = {1}", kvp.Key, kvp.Value)) .ToArray() // this line is only needed on older versions of .NET framework ); 

Essayez ce qui précède:

  ssortingng str = "this this is is aa ssortingng"; private int count(ssortingng key) { ssortingng[] ar = str.Split(new[] { " " }, SsortingngSplitOptions.RemoveEmptyEnsortinges); Dictionary d = new Dictionary(); for (int i = 0; i < ar.Length; i++) d.Add(i, ar[i]); return d.Where(x => x.Value == key).ToList().Count; } 

L’appel de fonction:

 count(str, "is"); 

Vous pouvez utiliser ce code pour obtenir un tableau de tous les mots d’une chaîne.

 static ssortingng[] SplitWords(ssortingng s) { return Regex.Split(s, @"\W+"); } 

Et vous pouvez ensuite utiliser une boucle foreach pour compter tous les moments où le mot vient dans le tableau. Comme ça:

 int count = 0; foreach(ssortingng s in SplitWords("This is is a ssortingng"){ if(s == "is"){ count++; } } 

int compte est le nombre de fois que le mot vient dans la chaîne.

Source: http://www.dotnetperls.com/split