有没有办法使以下返回为真?
string title = "ASTRINGTOTEST"; title.Contains("string");
似乎没有允许我设置大小写敏感度的重载。.目前,我都将它们都大写,但这只是愚蠢的(我指的是上下外壳附带的i18n问题)。
更新 这个问题是古老的,从那时起,我意识到如果您希望进行全面研究,我会为一个非常广泛且困难的主题要求一个简单的答案。 在大多数情况下,在单语的英语代码库中,此答案就足够了。我很怀疑,因为大多数来这里的人都属于这一类,这是最受欢迎的答案。但是, 这个答案提出了一个固有的问题,即我们无法区分不区分大小写的文本,直到我们知道两个文本是相同的文化并且我们知道该文化是什么。这可能是一个不太受欢迎的答案,但我认为它更正确,这就是为什么我将其标记为这样。
测试字符串是否paragraph包含字符串word(感谢@QuarterMeister)
paragraph
word
culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0
描述文字所用语言culture的实例在哪里CultureInfo。
culture
CultureInfo
该解决方案对于 不区分大小写的定义 是透明的, 该定义取决于语言 。例如,英语使用第九个字母的字符I以及i大写和小写形式,而土耳其语使用29个字母长的字母的第十一和第十二个字母的字符。土耳其语的大写版本“ i”是一个陌生的字符“İ”。
I
i
因此,字符串tin和 在英语TIN中是相同的词,但 在土耳其语中是 不同的词。据我了解,一种是“精神”,另一种是拟声词。(特克斯,如果我错了,请纠正我,或者提出一个更好的例子)
tin
TIN
总而言之, 如果您知道文本所用的语言 ,则只能回答“这两个字符串相同但在不同情况下” 的问题 。如果您不知道,则必须平底锅。考虑到英语在软件方面的霸权,您可能应该诉诸CultureInfo.InvariantCulture,因为用熟悉的方式会出错。
CultureInfo.InvariantCulture