В заголовках статей я использую CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
, но я думаю, что после двойных кавычек это не работает. По крайней мере, для турецкого.
Например, заголовок статьи:
KİRA PARASININ ÖDENMEMESİ NEDENİYLE YAPILAN "ИЛАМСИЗ ТАХЛИЕ"
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.
Проблема здесь. Потому что это должно быть так:
... "Такип Талеби" нин ...
но это так:
... "Такип Талеби" Нин ...
Более того, в MS Word, когда я нажимаю «Начать первоначальный расход Word», он трансформируется так
... "Такип Талеби" Нин ...
Но это абсолютно неправильно. Как я могу решить эту проблему?
РЕДАКТИРОВАТЬ: Сначала я вырезал предложение из пробелов и получил слова. Если слово содержит двойные кавычки, оно получит строчную строку до первого пробела после второй двойной кавычки. Вот идея:
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();
}
Редактировать - 2 Через 3 часа: Через 9 часов я нашел способ решить проблему. Я считаю, что это абсолютно не научно. Пожалуйста, не осуждайте меня за это. Если вся проблема заключается в двойных кавычках, я заменяю его числом, которое, на мой взгляд, является уникальным или неиспользованным по-турецки, например, альфа, бета, омега и т. Д., Прежде чем отправить его в 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