TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C# Plural Words

This C# program implements word pluralization using a lookup table.

Plurals. Programs sometimes need to handle plural words.

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.

StaticStatic Field

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.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf