在我的文章标题中,我使用CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
但我认为,它在双引号后不起作用。至少对于土耳其人来说。
例如,一篇文章的标题是这样的:
KİRA PARASININ ÖDENMEMESİ NEDENİYLE YAPILAN "İLAMSIZ TAHLİYE" TAKİPLERİNDE "TAKİP TALEBİ"NİN İÇERİĞİ。
使用这样的方法后:
private static string TitleCase(this string str)
{
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
}
var art_title = textbox1.Text.TitleCase();
它返回
Kira Parasının Ödenmemesi Nedeniyle Yapılan "İlamsız Tahliye" Takiplerinde "Takip Talebi"Nin İçeriği。
问题就在这里。因为它必须是这样的:
...“Takip Talebi”nin ...
但它是这样的:
...“Takip Talebi”宁 ...
更重要的是,在MS Word中,当我点击“Start a Word Initial Expense”时,它会变成这样
...“Takip Talebi”宁 ...
但这是绝对错误的。我该如何解决这个问题?
编辑:首先我从空白中剪下句子并获得单词。如果一个单词包含双引号,它将得到一个小写字符串,直到第二个双引号之后的第一个空格。这是想法:
private static string _TitleCase(this string str)
{
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
}
public static string TitleCase(this string str)
{
var words = str.Split(' ');
string sentence = null;
var i = 1;
foreach (var word in words)
{
var space = i < words.Length ? " " : null;
if (word.Contains("\""))
{
// After every second quotes, it would get a lowercase string until the first space after the second double quote... But how?
}
else
sentence += word._TitleCase() + space;
i++;
}
return sentence?.Trim();
}
编辑 - 3 小时后的 2:9 小时后,我找到了解决问题的方法。我认为这绝对不科学。请不要因此谴责我。如果整个问题是双引号,我将其替换为我认为唯一的数字或土耳其语中未使用的字母,例如 alpha、beta、omega 等,然后再将其发送到ToTitleCase
. 在这种情况下,ToTitleCase
实现标题转换没有任何问题。然后我在返回时间用双引号替换数字或未使用的字母。于是目的就实现了。如果您有程序化或科学的解决方案,请在此处分享。
这是我的非编程解决方案:
public static string TitleCase(this string str)
{
str = str.Replace("\"", "9900099");
str = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
return str.Replace("9900099", "\"").Trim();
}
var art_title = textbox1.Text.TitleCase();
结果:
Kira Parasının Ödenmemesi Nedeniyle Yapılan "İlamsız Tahliye" Takiplerinde "Takip Talebi"nin İçeriği