C# Wörter zählen?!

3 Antworten

Du hast einen String diesen splittest du mit .split(); Wenn du keine Argumente übergibt, wird der String nach jedem whitespace getrennt, als results bekommst du eine Liste von Typ String (deine Wortliste). Für das sortieren kannst du Sort(); oder OderBy(x => x).ToList(); benutzen.

minimaster13MC 
Fragesteller
 11.12.2014, 19:52

Vielen Dank, genau das hab ich gesucht! So und jetzt noch ne Frage, Ich hab jetzt ein Array mit den einzelnen Wörtern, gibt es da eine Funktion wie ich zählen kann wie oft ein Wort vorkommt? Ich kann ja theoretisch mit Array.Length zählen, aber wenn ein Wort doppelt vorkommt dann zählt es das ja auch doppelt.

Ich brauche im Endeffekt so eine Liste:

Ich heiße mini, ich heiße master

2xich 2xheiße 1xmini 1xmaster

Kannst du mir da evtl. auch nochmal helfen? xD

0
WaterRise  11.12.2014, 20:08
@minimaster13MC

Ich würde das Array durchlaufen und die Wörter in nem Dictionary speichern wenn ein Wort zweimal vorkommt den Zähler im Dictionary erhöhen.

Dictionary <string, int> dic = new Dictionary <string, int> ();
0
minimaster13MC 
Fragesteller
 11.12.2014, 20:27
@WaterRise

Ich hab kP was ein Dictionary ist, bin noch Anfänger ._. Aber ich werd mal googeln! Danke für den Tipp! ;)

0
Michael339  11.12.2014, 20:46
@minimaster13MC

Achso, dass Du erst beginnst, habe ich überlesen. Dann vergiss meine Lösung, Linq bekommst du später

0
minimaster13MC 
Fragesteller
 11.12.2014, 21:07
@Michael339

Okay xD Wollte grad schreiben das ich nicht mit bekomme. Hab im übrigen jetzt nochmal ne halbe Stunde mit Schleifen und "if's" rumgepfuscht und es funktioniert !! :)

Es gibt vermutlich eine Lösung die 3 mal einfacher ist als meiner, aber es funktioniert, und das ist alles was zählt! :D

0

Ich würd's in etwa so lösen:

     string satz = "ich heiße mini, ich heiße master";

                string[] gesplittet = satz.Split(); 

//Doppelte Einträge ignorieren und alphabetisch sortieren         
                var SortiertUndGezaehlt = from c in gesplittet.GroupBy(x=>x).OrderBy(x=>x.Key)
                                select new {
                                    wort = c.Key, 
//Anzahl Wörter anhand des ursprünglichen Arrays ermitteln                               
                                    anzahl = gesplittet.Where(x=>x.Equals(c.Key)).Count()
                                };

                Dictionary<string, int> Liste = SortiertUndGezaehlt.ToDictionary(x => x.wort, x1 => x1.anzahl);

                foreach (var element in Liste)
               {
                   Console.WriteLine(element.Key + ": " + element.Value.ToString());
               }

Aus was sollst du denn die Wortliste erstellen? oder noch besser was ist denn jetzt die Aufgabestellung ?

minimaster13MC 
Fragesteller
 11.12.2014, 19:53

Aus einem Text den ich eingebe

0