将字符串中的第一个字符大写

时间:2015-01-16 06:36:51

标签: c# performance

我想将我的字符串格式化为大写字母格式(即Capitalize First Char Of Words)。

For Example - 
              If Input is: "NEW YORK CITY"
              then the desired output is: "New York City"

*我的字符串最多有3个单词。

之后,谷歌搜索它,我发现了几种方法来实现这种方法,但我无法得到哪种方法最好。

方法1:

string City = "NEW YORK CITY";
City = City.ToLower();
string Capatilize_City = "";
Capatilize_City = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(City);

Demo : Ideone with 1st method

方法2:

string City = "NEW YORK CITY";
string[] lstWord = City.ToLower().Split(' ');
string Capatilize_City = "";
foreach (string s in lstWord)
{
  string z = s.Substring(0, 1).ToUpper() + s.Substring(1, s.Length - 1);
  Capatilize_City += " " + z;
}
Capatilize_City = Capatilize_City.Trim();

Demo: Ideone with 2nd method

哪种代码最适合使用(性能和速度副)?

2 个答案:

答案 0 :(得分:5)

你应该考虑代码大小,可读性,可理解性,可维护性,所以明确的赢家是......

<小时/> 的修改

所以我建议

Capatilize_City =
  System.Globalization.CultureInfo.CurrentCulture.TextInfo
      .ToTitleCase(City.ToLower());

答案 1 :(得分:1)

这一个班轮也有效:

string Capatilize_City =
    String.Join(
        " ",
        City
            .ToLower()
            .Split(' ')
            .Select(s =>
                s.Substring(0, 1).ToUpper()
                + s.Substring(1, s.Length - 1)));

除非你在一个巨大的字符串上执行此操作,否则对任何方法都不应该是一个问题。

我建议你自己做一个名为.ToTitleCase()的字符串的扩展方法并使用它 - 然后如果你需要更改实现,你可以在代码中的一个位置完成它。