Convert String To camelCase from TitleCase C#

后端 未结 11 1495

I have a string that I converted to a TextInfo.ToTitleCase and removed the underscores and joined the string together. Now I need to change the first and only the first charact

相关标签:
11条回答
  • 2021-02-04 23:45

    Here's my code which is pretty simple. My major objective was to ensure that camel-casing was compatible with what ASP.NET serializes objects to, which the above examples don't guarantee.

    public static class StringExtensions
    {
        public static string ToCamelCase(this string name)
        {
            var sb = new StringBuilder();
            var i = 0;
            // While we encounter upper case characters (except for the last), convert to lowercase.
            while (i < name.Length - 1 && char.IsUpper(name[i + 1]))
            {
                sb.Append(char.ToLowerInvariant(name[i]));
                i++;
            }
    
            // Copy the rest of the characters as is, except if we're still on the first character - which is always lowercase.
            while (i < name.Length)
            {
                sb.Append(i == 0 ? char.ToLowerInvariant(name[i]) : name[i]);
                i++;
            }
    
            return sb.ToString();
        }
    }
    
    0 讨论(0)
  • 2021-02-04 23:52

    Here is my code, in case it is useful to anyone

        // This converts to camel case
        // Location_ID => LocationId, and testLEFTSide => TestLeftSide
    
        static string CamelCase(string s)
        {
            var x = s.Replace("_", "");
            if (x.Length == 0) return "Null";
            x = Regex.Replace(x, "([A-Z])([A-Z]+)($|[A-Z])",
                m => m.Groups[1].Value + m.Groups[2].Value.ToLower() + m.Groups[3].Value);
            return char.ToUpper(x[0]) + x.Substring(1);
        }
    

    The last line changes first char to uppercase, but you can change to lowercase, or whatever you like.

    0 讨论(0)
  • 2021-02-04 23:53

    You just need to lower the first char in the array. See this answer

    Char.ToLowerInvariant(name[0]) + name.Substring(1)
    

    As a side note, seeing as you are removing spaces you can replace the underscore with an empty string.

    .Replace("_", string.Empty)
    
    0 讨论(0)
  • 2021-02-04 23:57

    Example 01

        public static string ToCamelCase(this string text)
        {
            return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text);
        }
    

    Example 02

    public static string ToCamelCase(this string text)
        {
            return string.Join(" ", text
                                .Split()
                                .Select(i => char.ToUpper(i[0]) + i.Substring(1)));
        }
    

    Example 03

        public static string ToCamelCase(this string text)
        {
            char[] a = text.ToLower().ToCharArray();
    
            for (int i = 0; i < a.Count(); i++)
            {
                a[i] = i == 0 || a[i - 1] == ' ' ? char.ToUpper(a[i]) : a[i];
    
            }
            return new string(a);
        }
    
    0 讨论(0)
  • 2021-02-04 23:58

    Adapted from Leonardo's answer:

    static string PascalCase(string str) {
      TextInfo cultInfo = new CultureInfo("en-US", false).TextInfo;
      str = Regex.Replace(str, "([A-Z]+)", " $1");
      str = cultInfo.ToTitleCase(str);
      str = str.Replace(" ", "");
      return str;
    }
    

    Converts to PascalCase by first adding a space before any group of capitals, and then converting to title case before removing all the spaces.

    0 讨论(0)
提交回复
热议问题