これはC#Linqを使って行うことができますか?例えばテキスト内の単語の出現数を取得
:私ができる
peter 3
peppers 2
picked 1
...
:
ピーターパイパーは、漬け唐辛子のパックを選んだピーマンはピーターのために甘いと種まきした、ピーターは結果
を考えました入れ子にされたforループでそれを行いますが、Linqを使用してより簡潔で、リソースの光の方法があると考えていました。
これはC#Linqを使って行うことができますか?例えばテキスト内の単語の出現数を取得
:私ができる
peter 3
peppers 2
picked 1
...
:
ピーターパイパーは、漬け唐辛子のパックを選んだピーマンはピーターのために甘いと種まきした、ピーターは結果
を考えました入れ子にされたforループでそれを行いますが、Linqを使用してより簡潔で、リソースの光の方法があると考えていました。
あなたはGROUPBYを使用することができます。
string original = "peter piper picked a pack of pickled peppers, the peppers were sweet and sower for peter, peter thought";
var words = original.Split(new[] {' ',','}, StringSplitOptions.RemoveEmptyEntries);
var groups = words.GroupBy(w => w);
foreach(var item in groups)
Console.WriteLine("Word {0}: {1}", item.Key, item.Count());
"peter piper picked a pack of pickled peppers,the peppers
were sweet and sower for peter, peter thought"
.Split(' ', ',').Count(x=>x == "peter");
「ピーター」のためのもので、他の人と同じ繰り返しです。
これはトリックを行う必要があります。
var str = "peter piper picked a pack of pickled peppers, the peppers were sweet and sower for peter, peter thought";
var counts = str
.Split(' ', ',')
.GroupBy(s => s)
.ToDictionary(g => g.Key, g => g.Count());
今辞書counts
があなたの文章から単語カウントのペアが含まれています。例えば、counts["peter"]
は、私はそれがより効率的か、 "リソース光" だかどうかわからないんだけど、あなたが行うことができます。3.
です:
string[] words = "peter piper picked a pack of pickled peppers, the peppers were sweet and sower for peter, peter thought".Split(" ");
int peter = words.Count(x=>x == "peter");
int peppers = words.Count(x=>x == "peppers");
// etc
const string s = "peter piper picked a pack of pickled peppers, the peppers were sweet and sower for peter, peter thought";
var wordFrequency =
from word in s.Split(' ')
group word by word
into wordGrouping
select new {wordGrouping.Key, Count = wordGrouping.Count()};
'Regex.Split(str、@" \ W ")。GroupBy ...'を使って、単語分割を簡略化することができます。収縮は気になるので、おそらく '[。、;:!?" "\ s-]'なんかかな。 – user7116
元の文字列に "、"セクションがあるので、これを指定すると 'string.Empty'のカウントが得られます... –
@ReedCopsey OPはループで実行できると言うので、私はほとんど確信しています彼はSplit(...)の呼び出しの後でその部分を探していると言っています。空の文字列に言及してくれてありがとう! – dasblinkenlight