Skip to main content
Version: 4.0 (next)

Humanizer.InflectorExtensions

InflectorExtensions Class

public static class InflectorExtensions

Inheritance System.Object → InflectorExtensions

Methods

InflectorExtensions.Camelize(this string) Method

Converts a string to camelCase (lowerCamelCase) by preserving leading underscores, capitalizing the first letter of each word except the first word, and removing other spaces, underscores, dashes, and dots.

public static string Camelize(this string input);

Parameters

input System.String

The string to be camelized. Must not be null.

Returns

System.String
A camelCase version of the input where leading underscores are preserved, the first word starts with a lowercase letter, subsequent words start with uppercase letters, and other separators are removed.

Example

"some_property_name".Camelize() => "somePropertyName"
"some property name".Camelize() => "somePropertyName"
"some.property.name".Camelize() => "somePropertyName"
"SomePropertyName".Camelize() => "somePropertyName"
"_some_property_name".Camelize() => "_somePropertyName"

Remarks

camelCase is the same as PascalCase except any leading underscores are preserved and the first character after them is lowercase. It's commonly used for variable and method parameter names in .NET. Casing is culture-invariant.

InflectorExtensions.Dasherize(this string) Method

Replaces all underscores in the string with dashes (hyphens).

public static string Dasherize(this string underscoredWord);

Parameters

underscoredWord System.String

The string containing underscores to be replaced with dashes. Must not be null.

Returns

System.String
A string with all underscores replaced by dashes.

Example

"some_property_name".Dasherize() => "some-property-name"
"some_longer_property_name".Dasherize() => "some-longer-property-name"

Remarks

This is typically used after calling Underscore(this string) to convert from underscore_case to dash-case (kebab-case).

InflectorExtensions.Hyphenate(this string) Method

Replaces all underscores in the string with hyphens. This is an alias for Dasherize(this string).

public static string Hyphenate(this string underscoredWord);

Parameters

underscoredWord System.String

The string containing underscores to be replaced with hyphens. Must not be null.

Returns

System.String
A string with all underscores replaced by hyphens.

Example

"some_property_name".Hyphenate() => "some-property-name"

Remarks

This method is functionally identical to Dasherize(this string) and is provided for API clarity.

InflectorExtensions.Kebaberize(this string) Method

Converts a string to kebab-case (lowercase words separated by hyphens), transforming PascalCase, camelCase, spaces, and underscores into hyphenated lowercase text.

public static string Kebaberize(this string input);

Parameters

input System.String

The string to be converted to kebab-case. Must not be null.

Returns

System.String
A lowercase string with words separated by hyphens.

Example

"SomePropertyName".Kebaberize() => "some-property-name"
"somePropertyName".Kebaberize() => "some-property-name"
"some property name".Kebaberize() => "some-property-name"
"some_property_name".Kebaberize() => "some-property-name"

Remarks

Kebab-case is commonly used for CSS class names, HTML attributes, and URL slugs. This is equivalent to calling Underscore(this string) followed by Dasherize(this string). Casing is culture-invariant.

InflectorExtensions.Pascalize(this string) Method

Converts a string to PascalCase (UpperCamelCase) by capitalizing the first letter of each word and removing spaces, underscores, dashes, and dots.

public static string Pascalize(this string input);

Parameters

input System.String

The string to be pascalized. Must not be null.

Returns

System.String
A PascalCase version of the input where each word starts with an uppercase letter and spaces, underscores, dashes, and dots are removed.

Example

"some_property_name".Pascalize() => "SomePropertyName"
"some property name".Pascalize() => "SomePropertyName"
"some-property-name".Pascalize() => "SomePropertyName"
"some.property.name".Pascalize() => "SomePropertyName"

Remarks

PascalCase (also known as UpperCamelCase) is commonly used for class names and type names in .NET. Casing is culture-invariant.

InflectorExtensions.Pascalize(this string, bool) Method

Converts a string to PascalCase (UpperCamelCase), optionally normalizing uppercase sequences as words.

public static string Pascalize(this string input, bool preserveUppercase);

Parameters

input System.String

The string to be pascalized. Must not be null.

preserveUppercase System.Boolean

true to preserve uppercase sequences; false to normalize them as words.

Returns

System.String
A PascalCase version of the input.

Example

"SMS parameter provider".Pascalize(preserveUppercase: true) => "SMSParameterProvider"
"HTTP IO module".Pascalize(preserveUppercase: false) => "HttpIoModule"

Remarks

Uppercase sequences are split using identifier word boundaries, and casing is culture-invariant.

InflectorExtensions.Pluralize(this string, bool) Method

Converts a singular word to its plural form, handling both regular and irregular pluralizations.

public static string? Pluralize(this string? word, bool inputIsKnownToBeSingular=true);

Parameters

word System.String

The word to be pluralized. Can be null.

inputIsKnownToBeSingular System.Boolean

Indicates whether the input is known to be in singular form. Set to true (default) if you're certain the word is singular. Set to false if the word might already be plural, in which case the method will check and avoid double-pluralization.

Returns

System.String
The plural form of the word, or null if the input was null. Handles irregular plurals (e.g., "person" → "people", "child" → "children") and regular plurals (e.g., "cat" → "cats").

Example

"person".Pluralize() => "people"
"cat".Pluralize() => "cats"
"box".Pluralize() => "boxes"
"man".Pluralize() => "men"
"meter per second".Pluralize() => "meters per second"
"PERSON".Pluralize() => "PEOPLE"
"cats".Pluralize(inputIsKnownToBeSingular: false) => "cats" (avoids double pluralization)

Remarks

Uses the default vocabulary which includes English pluralization rules and common irregular forms. In compound rates separated by the word "per", the numerator is pluralized and the denominator is preserved.

InflectorExtensions.Singularize(this string, bool, bool) Method

Converts a plural word to its singular form, handling both regular and irregular singularizations.

public static string Singularize(this string word, bool inputIsKnownToBePlural=true, bool skipSimpleWords=false);

Parameters

word System.String

The word to be singularized. Must not be null.

inputIsKnownToBePlural System.Boolean

Indicates whether the input is known to be in plural form. Set to true (default) if you're certain the word is plural. Set to false if the word might already be singular, in which case the method will check and avoid incorrect singularization.

skipSimpleWords System.Boolean

When true, skips singularization of simple words that just end in 's'. This helps avoid incorrectly singularizing words like "ross" to "ros".

Returns

System.String
The singular form of the word. Handles irregular singulars (e.g., "people" → "person", "children" → "child") and regular singulars (e.g., "cats" → "cat").

Example

"people".Singularize() => "person"
"cats".Singularize() => "cat"
"boxes".Singularize() => "box"
"men".Singularize() => "man"
"meters per second".Singularize() => "meter per second"
"PEOPLE".Singularize() => "PERSON"
"person".Singularize(inputIsKnownToBePlural: false) => "person" (avoids incorrect singularization)

Remarks

Uses the default vocabulary which includes English singularization rules and common irregular forms. In compound rates separated by the word "per", the numerator is singularized and the denominator is preserved.

InflectorExtensions.Titleize(this string) Method

Converts a string to title case by humanizing it first and then applying title casing. Each word in the result will start with an uppercase letter.

public static string Titleize(this string input);

Parameters

input System.String

The string to be converted to title case. Must not be null.

Returns

System.String
A humanized string with each word capitalized (title case). If humanization produces an empty string, returns the original input unchanged.

Example

"some_title".Titleize() => "Some Title"
"someTitle".Titleize() => "Some Title"
"some-package_name".Titleize() => "Some Package Name"

Remarks

This method first humanizes the input (breaking up PascalCase, underscores, etc.) and then applies title casing.

InflectorExtensions.ToCamelCase(this string) Method

Converts a string to camelCase while preserving leading underscores and normalizing uppercase sequences as words.

public static string ToCamelCase(this string input);

Parameters

input System.String

The string to be converted. Must not be null.

Returns

System.String
A camelCase version of the input with leading underscores preserved and uppercase sequences normalized.

Example

"IOModule".ToCamelCase() => "ioModule"
"__XMLHttpRequest".ToCamelCase() => "__xmlHttpRequest"

Remarks

Uppercase sequences are split using identifier word boundaries, and casing is culture-invariant.

InflectorExtensions.ToPossessive(this string, bool, bool) Method

Converts an English noun or noun phrase to its possessive form.

public static string? ToPossessive(this string? word, bool inputIsPlural=false, bool useApostropheOnlyForSingularWordsEndingInS=false);

Parameters

word System.String

The noun or noun phrase to convert.

inputIsPlural System.Boolean

Whether word is plural.

useApostropheOnlyForSingularWordsEndingInS System.Boolean

Whether singular words ending in s should use only an apostrophe instead of 's.

Returns

System.String
The possessive form of word.

InflectorExtensions.Underscore(this string) Method

Converts a string to lowercase and separates words with underscores, transforming PascalCase, camelCase, and spaces into underscore_case.

public static string Underscore(this string input);

Parameters

input System.String

The string to be underscored. Must not be null.

Returns

System.String
A lowercase string with words separated by underscores instead of spaces, case changes, or dashes.

Example

"SomePropertyName".Underscore() => "some_property_name"
"somePropertyName".Underscore() => "some_property_name"
"some-property-name".Underscore() => "some_property_name"
"some property name".Underscore() => "some_property_name"

Remarks

This transformation is commonly used for database column names, file names, and URL slugs in some conventions. Casing is culture-invariant.

InflectorExtensions.Underscore(this string, bool) Method

Separates words with underscores, optionally preserving the input casing.

public static string Underscore(this string input, bool preserveCase);

Parameters

input System.String

The string to be underscored. Must not be null.

preserveCase System.Boolean

true to preserve the input casing; false to convert the result to lowercase.

Returns

System.String
A string with words separated by underscores.

Example

"SomePropertyName".Underscore(preserveCase: true) => "Some_Property_Name"
"HTMLParser".Underscore(preserveCase: true) => "HTML_Parser"

Remarks

Acronyms are split using identifier word boundaries, and lowercasing is culture-invariant.