c# - 如何在标题条件中的引号后获取非小写字符串
问题描述
在我的文章标题中,我使用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
解决方案
实际上,Microsoft 文档ToTitleCase声明 ToTitleCase(至少目前)在语言上不正确。事实上,正确地做到这一点真的很难(请参阅伟大的 Michael Kaplan 的这些博客文章:有时,大写很糟糕和“Michael,为什么 ToTitleCase 这么糟糕?”)。
我不知道有任何服务或图书馆提供语言正确的版本。
所以——除非你想花很多精力——你可能不得不忍受这种不准确。
推荐阅读
- javascript - 如何使用枚举中的值对数组进行排序?
- elasticsearch - 没有使用 Olivere Golang 将数据插入 ElasticSearch
- r - 应用两个元素的函数
- r - R中循环的优化
- sql-server - 如何将结果从 int SQL Server 转换为字符串
- java - 使用测试容器时“未找到可链接容器”
- angular - Angular 5 访问由 Angular 5 打开的窗口打开的外部窗口对象 url
- cordova - 添加多个链接以在 phonegap 应用程序上共享
- algorithm - ElasticSearch (5.5) 查询或算法需要根据带有干扰模式的时间戳提取值
- python - Python:IndexError:列表索引超出范围和语法错误