TextInfo.ToTitleCase对所有CAPS字符串的预期效果不正常

时间:2010-04-23 08:38:52

标签: c# .net vb.net

我试图使用TextInfo.ToTitleCase将某些名称转换为正确的大小写。它适用于小写和大小写混合的字符串,但对于所有大写字符的字符串,它返回输入字符串。
MSDN文档中没有提到任何有关此行为的内容,任何见解?

3 个答案:

答案 0 :(得分:73)

来自MSDN docs:

  

备注   通常,标题大小写将单词的第一个字符转换为大写,其余字符转换为小写。但是,此方法目前不提供适当的大小写来转换完全大写的单词,例如首字母缩略词。下表显示了该方法呈现多个字符串的方式。

所以这是预期的行为。如果字符串全部为大写,则可以首先小写字符串,然后在其上运行ToTitleCase。

答案 1 :(得分:8)

我怀疑这是因为所有大写字母都应该是缩写,例如美国。

例如,您不会期望“地震袭击美国”会改为“地震袭击美国”吗?

答案 2 :(得分:4)

MSDN文档说:

通常,标题大小写将单词的第一个字符转换为大写,其余字符转换为小写。但是,一个完全大写的单词,例如首字母缩略词,不会被转换。

所以它按预期工作。试试TextInfo.ToTitleCase(TextInfo.ToLowerCase("STRINGINCAPS")

像:

string TitleCaseString;
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS"));