Skip to main content

String.ToTitleCase() extension method to convert String to Title Case or Pascal Case

As you most of you already aware, there are ToLower() and ToUp­per() meth­ods available for String class in C#, but there is no method to con­vert a string to ‘Title Case’.
We can implement this conversion with the help of Tex­tInfo class which has a ToTi­tle­Case method, but you can’t create a new instance of the Tex­tInfo type as there is no pub­lic con­struc­tor available. Instead you will need to first cre­ate a new CultureInfo object. To create a new CultureInfo object you can either use hard-coded culture or you can  use the cur­rent cul­ture of the exe­cut­ing thread as:

            var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;

That way, if you don’t care about the cul­ture info you’re using, you will just default to what­ever cul­ture info your cur­rent thread is using, much cleaner than the alternative!

Here I'm writing extension method of String  named ToTitleCase, in class StringExtension, I have created three extension method, one with current culture info, and two overloaded method, first takes Culture name as parameter and another takes CultureInfo as parameter. 
     
    public static class StringExtension
    {
        /// <summary>
        /// Use the current culture info
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static String ToTitleCase(this String value)
        {
            var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            return cultureInfo.TextInfo.ToTitleCase(value.ToLower());
        }

        /// <summary>
        /// Overload method with the specified culture info name
        /// </summary>
        /// <param name="value"></param>
        /// <param name="cultureInfoName"></param>
        /// <returns></returns>
        public static String ToTitleCase(this String value, String cultureInfoName)
        {
            var cultureInfo = new System.Globalization.CultureInfo(cultureInfoName);
            return cultureInfo.TextInfo.ToTitleCase(value.ToLower());
        }

        /// <summary>
        /// Overload method with the specified culture info
        /// </summary>
        /// <param name="value"></param>
        /// <param name="cultureInfo"></param>
        /// <returns></returns>
        public static String ToTitleCase(this String value, System.Globalization.CultureInfo cultureInfo)
        {
            return cultureInfo.TextInfo.ToTitleCase(value.ToLower());
        }
    }

You can use this extension with same as ToLower, ToUpper etc.

In the remarks of TextInfo.ToTitleCase method in the MSDN page it is defined that the method doesn’t pro­vide proper cas­ing to con­vert a word that is entirely upper­case, such as an acronym. That's why I have used the ToLower() method in each of the above exten­sion methods.

Cheers Guyz!!!!!!!!

Comments