在法国许多城市都以单引号引起来。就像“ rue de l'église”
我们几乎在每个UI部件中都使用一个转换器以完全大写形式编写它。
但是string.ToUpper似乎有一个错误,因为我们得到的是“ RUE DE L'Église”而不是我们应该得到的“ RUE DE L'ÉGLISE”。
你能解释为什么吗?无论如何要获得预期的结果?
我的转换器看起来像这样
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
var res = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(value.ToString().ToUpper());
return res;
}
return String.Empty;
}
最佳答案
ToTitleCase()
不执行您想要的操作。它大写每个单词的第一个字符。您想要的只是普通string.ToUpper()
:
Console.WriteLine("rue de l'église".ToUpper());
输出:
RUE DE L'ÉGLISE
ToTitleCase()
:Console.WriteLine(CultureInfo.GetCultureInfo("fr-fr").TextInfo.ToTitleCase("rue de l'église"));
输出量
Rue De L'église
组合
ToTitleCase()
和ToUpper()
会导致您描述这种奇怪的行为,因为ToTitleCase()
尝试将所有其他字符都比第一个字符小写(根据documentation,所有单词都是大写且首字母缩写词除外)