我想比较两个字符串,其中一个字符串可能是null
字符串,使用C#的StringComparison.InvariantCultureIgnoreCase
功能。当遇到null
字符串时,这会在运行时抛出异常。我该怎么做才能比较null
个字符串?
答案 0 :(得分:3)
使用
string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);
使用它的好处是,如果两个字符串是null
,它将返回0(相等) - 这是预期的结果。
答案 1 :(得分:3)
除了已经提供给您的选项外,您还可以考虑使用StringComparer.InvariantCultureIgnoreCase
。 StringComparer
处理空值而不抛出异常:
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);
}
}