2011-01-25 26 views
0

私は2つの文字列を比較したいと思います。そのうちの1つはnull文字列である可能性があります。StringComparison.InvariantCultureIgnoreCaseのC#の機能を使用しています。 null文字列に遭遇した場合、実行時に例外がスローされます。 null文字列を比較するにはどうすればよいですか?予想される結果である - あなたが使用することができますC#の文字列比較#

+0

彼らは両方とも、実行している比較のどのようなString.IsNullOrEmpty – Pabuc

+0

との最初の空であるかどうかを確認することができますか?平等または発注? –

+0

等価比較 – Vasanth

答えて

3

のと同様のオプションがすでにあなたに与えられ、あなたの代わりにStringComparer.InvariantCultureIgnoreCaseの使用を検討することができます。 StringComparerは、例外をスローせずにヌルを処理します。

string myCompareString = "compare me"; 

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

は、あなたが知っている文字列との比較が文字列に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")); 
    } 
} 
+0

以下のAliostadsの例のstring.Compareは、StringComparerの使用と同等ですか? –

+0

@Fredrik:正直言ってわかりません。あなたはそう望むだろうが、細かいことがあるかもしれない... –

0

これを使用しての

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

3

使用

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

利点は、2つの文字列がnullであれば、それは0(等しい)を返すことです。

0

文字列がnullのときに何が起きるかを示します。

あなたは、単にこのように、空の文字列にフォールバック可能性があります(str ?? "").Compare(...)

+0

「ヌル」は「」に等しいですか? –

0

このnullの可能性があります(2つのnull文字列を比較しない限り)。あなたも使用できるので、余分なオプションString.Equalsがヌルハンドルと同じように

0

をシステムを使用して、

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); 
    } 
}