簡體   English   中英

C#中的字符串比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM