[英]string comparison in c#
I want to compare two strings and one of them may be a null
string, am using StringComparison.InvariantCultureIgnoreCase
feature of C#. 我想比较两个字符串,其中一个可能是
null
字符串,正在使用C#的StringComparison.InvariantCultureIgnoreCase
功能。 This throws an exception in runtime when a null
string is encountered. 遇到
null
字符串时,将在运行时引发异常。 What shall I do to be able to compare even null
strings? 我应该怎么做才能比较
null
字符串?
use 采用
string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);
benefit of using this is that it will return 0 (equal) if two strings are null
- which is the expected result. 使用此方法的好处是,如果两个字符串为
null
,则它将返回0(等于)-这是预期的结果。
As well as the options already given to you, you can consider using StringComparer.InvariantCultureIgnoreCase
instead. 除了已经提供给您的选项之外,您还可以考虑使用
StringComparer.InvariantCultureIgnoreCase
。 StringComparer
handles nulls without throwing exceptions: StringComparer
处理null时不会抛出异常:
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"));
}
}
您可以使用
if (String.IsNullOrEmpty(yourString)) { // If true... }
Depens on what do you want to happen when string is null. 取决于当string为null时要发生什么。
You may simply fall back to empty string like this: (str ?? "").Compare(...)
您可以简单地回到空字符串,如下所示:
(str ?? "").Compare(...)
This from a post I remember @Jon Skeet answering a question about comparing: 我记得@Jon Skeet在一篇帖子中回答了有关比较的问题:
string myCompareString = "compare me";
if(myCompareString.Equals(myOtherMaybeNullString, StringComparison.InvariantCultureIgnoreCase))
{
// blah blah
}
Causes the comparison against a string you know is not null to a string that might be null (unless you are comparing 2 potentially null strings). 导致对您知道不为null的字符串与可能为null的字符串进行比较(除非您要比较2个可能为null的字符串)。
Just as a extra option String.Equals handles null so you could also use: 就像额外的选项String.Equals处理null一样,因此您也可以使用:
using 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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.