在最近的项目中工作时,这一直困扰着我。 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
远离。