Zählen Word Frequency (höherwertiges Wörter) in einem String, ausschließlich der Schlüsselwörter

StackOverflow https://stackoverflow.com/questions/3607765

Frage

Ich möchte die Häufigkeit von Wörtern zählen (mit Ausnahme einiger Schlüsselwörter) in einem String und sortieren sie DESC. Also, wie kann ich es tun?

In der folgenden Zeichenkette ...

This is stackoverflow. I repeat stackoverflow.

Wenn die ausschließlich der Schlüsselwörter sind

ExKeywords() ={"i","is"}

Die Ausgabe sollte wie sein

stackoverflow  
repeat         
this           

P. S. NEIN! Ich bin nicht Re-Design google! :)

War es hilfreich?

Lösung

string input = "This is stackoverflow. I repeat stackoverflow.";
string[] keywords = new[] {"i", "is"};
Regex regex = new Regex("\\w+");

foreach (var group in regex.Matches(input)
    .OfType<Match>()
    .Select(c => c.Value.ToLowerInvariant())
    .Where(c => !keywords.Contains(c))
    .GroupBy(c => c)
    .OrderByDescending(c => c.Count())
    .ThenBy(c => c.Key))
{
    Console.WriteLine(group.Key);
}

Andere Tipps

string s = "This is stackoverflow. I repeat stackoverflow.";
string[] notRequired = {"i", "is"};

var myData =
    from word in s.Split().Reverse()
    where (notRequired.Contains(word.ToLower()) == false)
    group word by word into g
    select g.Key;

foreach(string item in myData)
    Console.WriteLine(item);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top