сравнение строк в c # - PullRequest
       3

сравнение строк в c #

0 голосов
/ 25 января 2011

Я хочу сравнить две строки, и одна из них может быть строкой null, использую функцию StringComparison.InvariantCultureIgnoreCase в C #.Это вызывает исключение во время выполнения, когда встречается строка null.Что мне делать, чтобы иметь возможность сравнивать даже null строки?

Ответы [ 6 ]

3 голосов
/ 25 января 2011

Помимо уже предоставленных вам опций, вы можете рассмотреть возможность использования 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"));
    }
}
3 голосов
/ 25 января 2011

использование

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

преимущество использования этого заключается в том, что он вернет 0 (равно), если две строки равны null - что является ожидаемым результатом.

0 голосов
/ 25 января 2011

Так же, как дополнительная опция String.Equals обрабатывает нуль, так что вы также можете использовать:

с использованием системы;

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);
    }
}
0 голосов
/ 25 января 2011

Это из поста, который я помню @Jon Skeet, отвечая на вопрос о сравнении:

string myCompareString = "compare me";

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

Вызывает, что сравнение со строкой, которую вы знаете, не равно нулю, со строкой, которая может быть нулевой (если вы не сравниваете 2 потенциально нулевые строки).

0 голосов
/ 25 января 2011

Зависит от того, что вы хотите, чтобы строка была нулевой.

Вы можете просто вернуться к пустой строке, например: (str ?? "").Compare(...)

0 голосов
/ 25 января 2011

Вы можете использовать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...