改进字符串化方法

Gre*_*reg 3 c#

可能重复:
在C#中转换字符串

我想"camelize"一个字符串,例如:

  • 零件/附件 - >零件/配件
  • HELLO WORLD/TEST - > Hello World/Test
  • Hello World - > Hello World

这是我到目前为止所拥有的:

  public static string Camelize(this string str)
    {
        if (String.IsNullOrEmpty(str)) return "";

        var sb = new StringBuilder();
        char[] chars = str.ToLower().ToCharArray();
        bool upper = true;            
        // ' ', '-', '.', '/'
        for (int i = 0; i < chars.Length; ++i)
        {
            char c = chars[i];
            if (i == 0 || //First char 
                chars[i - 1] == ' ' ||
                chars[i - 1] == '-' ||
                chars[i - 1] == '.' ||
                chars[i - 1] == '/'
                ) upper = true;

            if (upper)             
                sb.Append(Char.ToUpper(c));                
            else                
                sb.Append(c);

            upper = false;
        }
        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法改进这种方法,我也知道字符串不会超过250个字符?谢谢

BFr*_*ree 14

怎么样:

    public static string Camelize(string text)
    {
        return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text.ToLower());
    }
Run Code Online (Sandbox Code Playgroud)

  • +1这就是为什么我喜欢这样,找到这些可爱的宝石. (6认同)
  • 正如 LukeH 所说,这不是“Camelize”,而是转换为标题大小写。Camelize 将是“Hello World”-&gt;“hello World” (2认同)