私は私の問題に助けが必要です:どのように文字列をループしていくつの単語があるのか調べるには?
今私はボタンとテキストボックスを含むフォームでWPFアプリケーションを持っています。
また、私は開いているファイルディレクトリを持っています。これは.csと.txtファイルを開きます。
これらのファイルの文字列をループして、最も大きい単語から最も小さい単語まで、最も一般的な単語を表示する必要があります。
たとえば、文字列は次のようになります。
は「太陽は明るい太陽が黄色です。」。
は返します:
を= 2;
sun = 2;
は2であり;
明るい= 1;
イエロー= 1;今のよう
マイコード:
private void btn1_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog() { Filter = "Text Documents |*.cs;*.txt", ValidateNames = true, Multiselect = false };
if (ofd.ShowDialog() == true)
rtb.Text = File.ReadAllText(ofd.FileName);
string[] userText = rtb.Text.ToLower().Split(new char[] { ' ', ',', '=', '+', '}', '{', '\r', '\n', '(', ')', ';' }, StringSplitOptions.RemoveEmptyEntries);
var frequencies = new Dictionary<string, int>();
foreach (string word in userText) //search words in our array userText that we declared at the beginning.
{
}
}
私はここから継続するかどうかはわかりませんが...ヘルプは大歓迎です。あなたが辞書に単語を置き、その数、あなたがそれらを見つけるたびに増分することができます
IDictionary<string, int> actualDictionary = new Dictionary<string, int>();
:それは開始するには良い場所かもしれませんので
...あなたのサンプルのように辞書を使用して同じコードを実装する方法を知りたい場合、私はあなた 'Dictionary'の大文字小文字を区別しない...' VAR周波数=新しい辞書することを検討します(StringComparer.CurrentCultureIgnoreCase); ' –
bigtlb
あなたのソリューションをありがとう!どのように正確に戻り値をテキストボックスに入れますか? –
TextBoxが 'txt'の場合、' txt.Text'フィールドを設定してください。 {tv} .Top.Text = string.Join( "\ r"、frequencies.Select(kvp => $ "Word:{kvp.Key}頻度:{kvp.Value}")ToArray()) '。 ListBoxを使用して各行をListBoxItemに割り当てる方が良いかもしれませんが。 – bigtlb