C# 带重载的字符串比较

C# 带重载的字符串比较,c#,string,C#,String,我的项目中有类似的场景,我必须比较两个字符串,并且字符串是相同的。但有些字符是大写的 string first = "StringCompaRison"; string second = "stringcoMparisoN"; if(first.Equals(second)) { Console.WriteLine("Equal "); } else Console.WriteLine("Not Equal"); 对我来说,输出应该是相等的,我对编程非常陌生,应

我的项目中有类似的场景,我必须比较两个字符串,并且字符串是相同的。但有些字符是大写的

string first = "StringCompaRison";
string second = "stringcoMparisoN";
if(first.Equals(second))
{
        Console.WriteLine("Equal ");
}
else
        Console.WriteLine("Not Equal");

对我来说,输出应该是相等的,我对编程非常陌生,应该使用哪个重载?有人能告诉我比较的有效方法吗?

您正在寻找:

if (first.Equals(second, StringComparison.InvariantCultureIgnoreCase))


还有很多其他方法可以做到这一点, 调用字符串比较方法(如string.Compare、string.Equals或string.IndexOf)时,应始终调用包含StringComparison类型参数的重载,以便指定该方法执行的比较类型

重载: CurrentCulture,CurrentCultureIgnoreCase,不变量Culture,不变量CultureIgnoRecase,序号和序号

更多信息

使用与StringComparison.Ordinal或StringComparison.OrdinalIgnoreCase的比较可获得更好的性能,并作为区域性不可知字符串匹配的安全默认值

您可以使用String.ToUpper、String.ToLower,但这将为String分配内存

这是最好的方法

string first = "StringCompaRison";
string second = "stringcoMparisoN";
if(first.Equals(second,StringComparison.OrdinalIgnoreCase)
{
        Console.WriteLine("Equal ");
}
else
        Console.WriteLine("Not Equal");
使用


将两者转换为小写,然后进行比较
bool match = (String.Compare(first, second, true) == 0);
if (match)
{
    Console.WriteLine("Equal");
}
else
{
    Console.WriteLine("Not equal");
}