C# Wörter zählen?!
Es soll eine sortierte Wortliste inklusive der Anzahl der Vorkommen im Text ausgegeben werden. Zum Sortieren verwende die Klassenmethode:
Array.Sort(wörter);
Bin zu blöd um ein "Zitat" einzufügen. Kann mir dabei einer helfen? Habs hinbekommen das ich die Wörter und die Zeichen zähle, habe aber keine Ahnung wie ich nun zur Wortliste komme ...
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.
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> ();
Ich hab kP was ein Dictionary ist, bin noch Anfänger ._. Aber ich werd mal googeln! Danke für den Tipp! ;)
Achso, dass Du erst beginnst, habe ich überlesen. Dann vergiss meine Lösung, Linq bekommst du später
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
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 ?
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