On occasion I am working with strings that are simply the enum value, such as “MyEnum.SampleEnumName”. I want to display it as a string without the camelcase formatting “Sample Enum Name”. To do this I added the following FromCamelCase extension method to string.
namespace CustomExtensions { public static class StringExtension { public static string ToStringOrEmpty(this object value) { return string.Concat(value, ""); } /// <summary> /// Converts a string from CamelCase to a human readable format. /// Inserts spaces between upper and lower case letters. /// Also strips the leading "_" character, if it exists. /// </summary> /// <param name="propertyName"></param> /// <returns>A human readable string.</returns> public static string FromCamelCase(this string propertyName) { string returnValue = null; returnValue = propertyName.ToStringOrEmpty(); //Strip leading "_" character returnValue = Regex.Replace(returnValue, "^_", "").Trim(); //Add a space between each lower case character and upper case character returnValue = Regex.Replace(returnValue, "([a-z])([A-Z])", "$1 $2").Trim(); //Add a space between 2 upper case characters when the second one is followed by a lower space character returnValue = Regex.Replace(returnValue, "([A-Z])([A-Z][a-z])", "$1 $2").Trim(); return returnValue; } } }