字符串与重载比较

时间:2014-07-02 19:39:05

标签: c# string

我的项目中有类似的情况,我必须比较两个字符串,字符串是相同的。但有些字符是大写字母。

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

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

3 个答案:

答案 0 :(得分:3)

你正在寻找这个:

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

String.Equals documentation

StringComparison Enumeration documentation

答案 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)

使用String.Compare

bool match = (String.Compare(first, second, true) == 0);
if (match)
{
    Console.WriteLine("Equal");
}
else
{
    Console.WriteLine("Not equal");
}