在最近的项目中工作时,这一直困扰着我。 C#为什么没有本机函数将字符串更改为标题大小写?

例如

string x = "hello world! THiS IS a Test mESSAGE";
string y = x.ToTitle(); // y now has value of "Hello World! This Is A Test Message"


我们有.ToLower.ToUpper,非常感谢您可以使用System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase或创建TextInfo对象(相同的过程),但是太丑了。

有人知道原因吗?

最佳答案

实际上它具有:TextInfo.ToTitleCase

为什么在那里?因为套管取决于当前的文化。例如。土耳其文化对“ i”和“ I”字符的大小写有所不同。阅读有关此here的更多信息。

更新:实际上,我同意@Cashley的观点,即说ToTitleCase类上缺少的String方法看起来像是对MicroSoft的疏忽。如果您查看String.ToUpper()String.ToLower(),您会发现两者都在内部使用TextInfo

public string ToUpper()
{
    return this.ToUpper(CultureInfo.CurrentCulture);
}

public string ToUpper(CultureInfo culture)
{
    if (culture == null)
        throw new ArgumentNullException("culture");

    return culture.TextInfo.ToUpper(this);
}


因此,我认为ToTitleCase()应该有相同的方法。也许.NET团队决定只将那些最常用的方法添加到String类中。我看不出有其他原因可以使ToTitleCase远离。

09-10 01:47