有没有办法让下面的返回为真?
string title = "ASTRINGTOTEST";
title.Contains("string");
似乎没有过载允许我设置区分大小写。目前我将它们都大写,但这很愚蠢(我指的是i18n http://en.wikipedia.org/wiki/Internationalization_and_localization上下套管带来的问题)。
UPDATE
这个问题很古老,从那时起我意识到,如果你愿意彻底调查它,我就为一个非常庞大和困难的主题要求一个简单的答案。
对于大多数情况,采用单语言英语代码库this https://stackoverflow.com/a/444818/11333答案就足够了。我怀疑,因为大多数来这里的人都属于这一类,这是最受欢迎的答案。
This https://stackoverflow.com/a/15464440/11333然而,答案提出了一个固有的问题,即在我们知道两个文本是相同的文化并且我们知道该文化是什么之前,我们无法比较不区分大小写的文本。这可能是一个不太受欢迎的答案,但我认为它更正确,这就是我如此标记它的原因。
你可以使用String.IndexOf Method https://msdn.microsoft.com/en-us/library/ms224425(v=vs.110).aspx并通过StringComparison.OrdinalIgnoreCase https://msdn.microsoft.com/en-us/library/system.stringcomparer.ordinalignorecase(v=vs.110).aspx作为要使用的搜索类型:
string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
更好的是为字符串定义一个新的扩展方法:
public static class StringExtensions
{
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source?.IndexOf(toCheck, comp) >= 0;
}
}
注意零传播 https://stackoverflow.com/questions/25666993/c-sharp-null-propagating-operator-conditional-access-expression-if-blocks ?.
从 C# 6.0 (VS 2015) 开始可用,供旧版本使用
if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;
USAGE:
string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)