HomeSearch

C# Count Letter Frequencies

Implement a method that counts the frequencies of letters in text.
Letter frequencies. English text contains some letters more than others. It is possible to compute a table of letter frequencies. We do this with a method in the C# language. This may be part of a homework assignment or required for simple textual analysis.
Example. The first part of the solution is declaring an array to store the frequencies. In the C# programming language, the char type is 2 bytes, which means it contains 65535 elements to store.Int Array

Part 1: We use the new char syntax and initialize the array size to char.MaxValue, which is a constant value defined in the .NET Framework.

Char

Part 2: We read in the file where we are counting letters. The File.ReadAllText method efficiently reads the file and places its contents into a string.

File.ReadAllText

Next: We add up frequencies by iterating over each letter, and casting it to an int. We increment each "slot" for the letters we find.

Finally: We display all letter or digit characters we found. The Console.WriteLine statement actually prints the results to the screen.

Console
C# program that counts frequency of letters using System; using System.IO; class Program { static void Main() { // 1. // Array to store frequencies. int[] c = new int[(int)char.MaxValue]; // 2. // Read entire text file. string s = File.ReadAllText("text.txt"); // 3. // Iterate over each character. foreach (char t in s) { // Increment table. c[(int)t]++; } // 4. // Write all letters found. for (int i = 0; i < (int)char.MaxValue; i++) { if (c[i] > 0 && char.IsLetterOrDigit((char)i)) { Console.WriteLine("Letter: {0} Frequency: {1}", (char)i, c[i]); } } } } Input file aaaa bbbbb aaaa bbbbb aaaa bbbbb CCcc xx y y y y y Z Output Letter: C Frequency: 2 Letter: Z Frequency: 1 Letter: a Frequency: 12 Letter: b Frequency: 15 Letter: c Frequency: 2 Letter: x Frequency: 2 Letter: y Frequency: 5
Correct. Incorrect code is worse than useless in production environments. The following table shows the input file I used and the output from the program. We see that the frequencies are correct.
Summary. We counted the letter frequencies in a string or file using the C# language. This is handy code to have for text-based processing. The code I showed works correctly on the input files I tested, one of which I documented above.

Review: Most important in the solution is how the array is declared and the constants are used.

© 2007-2019 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.
Home
Dot Net Perls