[英]string comparison in c#
我想比較兩個字符串,其中一個可能是null
字符串,正在使用C#的StringComparison.InvariantCultureIgnoreCase
功能。 遇到null
字符串時,將在運行時引發異常。 我應該怎么做才能比較null
字符串?
采用
string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);
使用此方法的好處是,如果兩個字符串為null
,則它將返回0(等於)-這是預期的結果。
除了已經提供給您的選項之外,您還可以考慮使用StringComparer.InvariantCultureIgnoreCase
。 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... }
取決於當string為null時要發生什么。
您可以簡單地回到空字符串,如下所示: (str ?? "").Compare(...)
我記得@Jon Skeet在一篇帖子中回答了有關比較的問題:
string myCompareString = "compare me";
if(myCompareString.Equals(myOtherMaybeNullString, StringComparison.InvariantCultureIgnoreCase))
{
// blah blah
}
導致對您知道不為null的字符串與可能為null的字符串進行比較(除非您要比較2個可能為null的字符串)。
就像額外的選項String.Equals處理null一樣,因此您也可以使用:
使用系統;
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.