【发布时间】:2020-04-02 11:57:42
【问题描述】:
我有一个需要转换的字符串,以便将第一个字符转换为大写。使用 ToTitleCase 方法它可以正常工作,除了有特殊字符的情况。
下面是代码和预期结果
String textToConvert= "TEST^S CHECK"
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
return myTI.ToTitleCase(textToConvert.ToLower())
预期结果:Test^s 检查 但结果是 Test^S Check with "S" 在特殊字符后转换为大写 ^
有没有办法将转换更改为预期结果
【问题讨论】:
-
不适用于
ToTitleCase,尽管他们确实保留了将来使功能变慢的权利;)-为此,现在,您必须自己动手(这应该不难做)。 -
你希望这个字符串变成什么?
"TEST.S CHECK"? -
@LasseV.Karlsen:应该是Test.s Check
-
符号
^被称为“Circumflex 重音”,在 Unicode 中被声明为“修饰符符号”。在 C# 中有一个 small static function 确定字符是否为单词分隔符,修饰符符号是否为单词分隔符。这意味着就 .NET 而言,以下字符 S 是一个单独的词。 -
请注意,ToTitleCase 实际上工作得很好,只是你想要的不是它支持的。也就是说,这个处理不是bug,应该是这样的。
标签: c# cultureinfo case-conversion