在法国许多城市都以单引号引起来。就像“ 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,所有单词都是大写且首字母缩写词除外)

08-28 12:45