如果您想使用美国文化来执行套管,您需要始终如一地这样做。相反,您当前正在将当前区域性中的字符串小写,这导致了问题。
相反,TextInfo
对小写和标题大小写操作使用相同的:
sing System;
using System.Globalization;
class Program
{
static void Main()
{
CultureInfo.CurrentCulture = new CultureInfo("tr-TR");
var text = "VIENNA IS A VERY BEAUTIFUL CAPITAL CITY.";
// Original code in the question
var title1 = new CultureInfo("en-US", false).TextInfo.ToTitleCase(text.ToLower());
Console.WriteLine(title1); // Contains Turkish "i" characters
// Corrected code
var textInfo = new CultureInfo("en-US", false).TextInfo;
var lower = textInfo.ToLower(text);
var title2 = textInfo.ToTitleCase(lower);
Console.WriteLine(title2); // Correct output
}
}
(这大致相当于 Jens 的答案,但TextInfo
如果您将其用于任何一个操作,我更喜欢同时使用这两个操作,只是为了保持一致性。)