我的项目中有类似的情况,我必须比较两个字符串,字符串是相同的。但有些字符是大写字母。
string first = "StringCompaRison";
string second = "stringcoMparisoN";
if(first.Equals(second))
{
Console.WriteLine("Equal ");
}
else
Console.WriteLine("Not Equal");
对我来说,输出应该是相同的,对于编程来说是非常新的,使用哪种重载?有人能告诉我有效的比较方法吗?
答案 0 :(得分:3)
你正在寻找这个:
if (first.Equals(second, StringComparison.InvariantCultureIgnoreCase))
答案 1 :(得分:0)
还有很多其他方法可以做到这一点, 当您调用字符串比较方法(如String.Compare,String.Equals或String.IndexOf)时,应始终调用包含StringComparison类型参数的重载,以便指定方法执行的比较类型。 / p>
重载: CurrentCulture,CurrentCultureIgnoreCase,InvariantCulture,InvariantCultureIgnoreCase,Ordinal和OrdinalIgnoreCase
了解更多信息http://msdn.microsoft.com/en-us/library/system.stringcomparison(v=vs.110).aspx
使用与StringComparison.Ordinal或StringComparison.OrdinalIgnoreCase的比较以获得更好的性能,并作为与文化无关的字符串匹配的安全默认值,
您可以使用String.ToUpper,String.ToLower,但这会为字符串分配内存。
这是最好的方法,
string first = "StringCompaRison";
string second = "stringcoMparisoN";
if(first.Equals(second,StringComparison.OrdinalIgnoreCase)
{
Console.WriteLine("Equal ");
}
else
Console.WriteLine("Not Equal");
答案 2 :(得分:0)
bool match = (String.Compare(first, second, true) == 0);
if (match)
{
Console.WriteLine("Equal");
}
else
{
Console.WriteLine("Not equal");
}