Danish Kareem Ответов: 2

Подсчет символов из текстового файла C#


Я пишу пример программы WPF которая будет читать a text.txt файл с openfiledialouge и покажет результат появления каждого символа, включая специальные символы(~!@#$%^&*()_+-) в текстовом поле.
то, что я написал, - это записать все содержимое файла в текстовое поле.
Я хочу подсчитать вхождение каждого символа и вывод в текстовое поле.

Пример вывода:
<pre><pre>Number of 'a':10
Number of 'b':20
Number of '@':5

.
.
Number of 'z':15


Что я уже пробовал:

protected void Button_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFile = new OpenFileDialog();

    if (openFile.ShowDialog()==true)
    {
        string filepath = openFile.FileName;
        textbox.Text = File.ReadAllText(filepath);


        readbar.Value = 100;

    }

}

2 Ответов

Рейтинг:
6

OriginalGriff

Попробовать это:

string content = "ABCDEFFGGGHHHHIIIII";
var differentChars = content.GroupBy(g => g).Select (g => new {c = (char) g.Key, count = g.Count()});
Затем вы можете использовать foreach
foreach (var pair in differentChars)
    {
    Console.WriteLine("{0}:{1}", pair.c, pair.count);
    }


Рейтинг:
20

phil.o

Вы могли бы использовать Dictionary<char, int> чтобы подсчитать вхождения каждого персонажа.

Dictionary<char, int> occurrences = new Dictionary<char, int>();
string text = File.ReadAllText(filepath);
foreach (char c in text) {
   if (!occurrences.ContainsKey(c)) {
      occurrences.Add(c, 1);
   }
   else {
      occurrences[c]++;
   }
}

Вы закончите с количеством вхождений каждого символа в строке. Но это может быть немного сложнее, если ваш входной текстовый файл содержит символы юникода, которые не могут быть представлены простым char ценность.


Ĥãsŋäḭn Ɏḁɋoȱb

каким будет код , если мы хотим считать только специальные символы .?