Convert Dash-Separated String to camelCase via C#

前端 未结 5 1518
天涯浪人
天涯浪人 2021-01-21 20:56

I have a large XML file that contain tag names that implement the dash-separated naming convention. How can I use C# to convert the tag names to the camel case naming convention

5条回答
  •  有刺的猬
    2021-01-21 21:22

    For completeness, here's also a regular expression one-liner (inspred by this JavaScript answer):

    string ConvertDashToCamelCase(string input) =>
        Regex.Replace(input, "-.", m => m.Value.ToUpper().Substring(1));
    

    It replaces all occurrences of -x with x converted to upper case.


    Special cases:

    • If you want lower-case all other characters, replace input with input.ToLower() inside the expression:

        string ConvertDashToCamelCase(string input) =>
            Regex.Replace(input.ToLower(), "-.", m => m.Value.ToUpper().Substring(1));
      
    • If you want to support multiple dashes between words (dash--case) and have all of the dashes removed (dashCase), replace - with -+ in the regular expression (to greedily match all sequences of dashes) and keep only the final character:

        string ConvertDashToCamelCase(string input) =>
            Regex.Replace(input, "-+.", m => m.Value.ToUpper().Substring(m.Value.Length - 1));
      
    • If you want to support multiple dashes between words (dash--case) and remove only the final one (dash-Case), change the regular expression to match only a dash followed by a non-dash (rather than a dash followed by any character):

        string ConvertDashToCamelCase(string input) =>
            Regex.Replace(input, "-[^-]", m => m.Value.ToUpper().Substring(1));
      

提交回复
热议问题