c#中的字符串比较

时间:2011-01-25 13:11:39

标签: c# string

我想比较两个字符串,其中一个字符串可能是null字符串,使用C#的StringComparison.InvariantCultureIgnoreCase功能。当遇到null字符串时,这会在运行时抛出异常。我该怎么做才能比较null个字符串?

6 个答案:

答案 0 :(得分:3)

使用

 string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);

使用它的好处是,如果两个字符串是null,它将返回0(相等) - 这是预期的结果。

答案 1 :(得分:3)

除了已经提供给您的选项外,您还可以考虑使用StringComparer.InvariantCultureIgnoreCaseStringComparer处理空值而不抛出异常:

using System;

class Test
{
    static void Main()
    {
        StringComparer comparer = StringComparer.InvariantCultureIgnoreCase;
        Console.WriteLine(comparer.Compare("a", "A"));
        Console.WriteLine(comparer.Compare("a", null));
        Console.WriteLine(comparer.Compare(null, "A"));
    }
}

答案 2 :(得分:0)

您可以使用

if (String.IsNullOrEmpty(yourString)) { // If true... }

答案 3 :(得分:0)

取决于string为null时您想要发生什么。

您可以简单地回到空字符串:(str ?? "").Compare(...)

答案 4 :(得分:0)

这篇文章记得@Jon Skeet回答有关比较的问题:

string myCompareString = "compare me";

if(myCompareString.Equals(myOtherMaybeNullString, StringComparison.InvariantCultureIgnoreCase))
{
   // blah blah
}

使得对于您知道不为空的字符串的比较导致可能为null的字符串(除非您要比较2个可能为空的字符串)。

答案 5 :(得分:0)

作为额外选项,String.Equals处理null,因此您也可以使用:

使用System;

class Test
{
    static void Main()
    {
            var a = String.Equals("test", "Test", StringComparison.InvariantCultureIgnoreCase);
            var b = String.Equals("test", null, StringComparison.InvariantCultureIgnoreCase);
            var c = String.Equals(null, "Test", StringComparison.InvariantCultureIgnoreCase);
            var d = String.Equals(null, null, StringComparison.InvariantCultureIgnoreCase);
    }
}