C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
A layer of abstraction helps manage plural and singular nouns. A lookup table of known values can provide better performance, smaller memory footprint, and fewer errors.
Example. This program provides a simple abstraction on the procedure of obtaining a plural word from a singular word based on the count. This means it can be used to get the phrase "2 results" from the values (2) and "result".
Note: The implementation is not advanced but offers the benefit of simplicity and can improve the overall structure of certain programs.
And: Because the problem of parsing English text is extremely difficult, this class simply uses hard-coded values and does a lookup.
C# program that resolves plural words
using System;
using System.Collections.Generic;
public static class Plurals
{
static Dictionary<string, string> _pluralTable =
new Dictionary<string, string>
{
{"entry", "entries"},
{"image", "images"},
{"view", "views"},
{"file", "files"},
{"result", "results"},
{"word", "words"},
{"definition", "definitions"},
{"item", "items"},
{"megabyte", "megabytes"},
{"game", "games"}
};
public static string Plural(string word, int count)
{
// Special-case count of one.
// ... Otherwise, return the pluralized word.
if (count == 1)
{
return word;
}
return _pluralTable[word];
}
public static string PluralPhrase(string word, int count)
{
// Returns phrase of complete pluralized phrase.
// .. Such as "3 files".
string properPlural = Plural(word, count);
return count.ToString() + " " + properPlural;
}
}
class Program
{
static void Main()
{
Console.WriteLine(Plurals.Plural("word", 0));
Console.WriteLine(Plurals.Plural("word", 1));
Console.WriteLine(Plurals.Plural("word", 2));
Console.WriteLine(Plurals.PluralPhrase("view", 0));
Console.WriteLine(Plurals.PluralPhrase("view", 1));
Console.WriteLine(Plurals.PluralPhrase("view", 2));
}
}
Output
words
word
words
0 views
1 view
2 views



Plural receives the word and the count of the word in the sentence. It returns a version of the word that it is correctly pluralized if located in the Dictionary. PluralPhrase returns a string with the original number in it.
Static Dictionary storage. This program shows the static Dictionary as well. You can use a static Dictionary and use a field initializer to populate it with values before it is used.
Info: The indexer on the Dictionary is used. This will throw an exception if the string is not found.
And: The methods provide fast lookup even with many strings in the Dictionary. You can populate the Dictionary through a text file.
Discussion. Declarative, expression-based programming styles can benefit certain program requirements. In some simple programs, a ternary expression or if-statement is used to handle the English plural rules for a count of one.
However: If this pattern is repeated often, it can become a burden on the overall structure.
Thus: Using a static and immutable data structure can simplify programs. This provides another level of indirection.
Summary. Here we looked at a simple class that demonstrates a private and static Dictionary when used as a data structure for providing plural words. The program receives singular words and looks these words up to form singular words.