сравнивая строковое значение с indexof со всей строкой - PullRequest
0 голосов
/ 11 января 2019

У меня есть строка, которая может получить любое возможное значение, как показано ниже (Обратите внимание, что 2 значения могут быть такими же, как message1, message4 ниже, однако, помните, что это может быть с тем же или другим регистром, но я хочу игнорировать регистр и сравните из списка, я получаю это).

string Message = "No need of validation";
string Message = "No need of validation for certain members only"
string Message = "Validation for this member - No need of validation"
string Message = "no need of validation";

Message.IndexOf("No need of validation", StringComparison.CurrentCultureIgnoreCase) >= 0)

Теперь мой код выше будет возвращать true / false для 2, 3-го сценария?

Я ожидаю true только для 1,4 и false для 2,3. Пожалуйста, подтвердите меня. Если это не правильно, пожалуйста, помогите мне изменить мой код

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Если я правильно понимаю результаты, вы можете использовать Ye old string.Compare, он существует с .Net 1.1

Сравнить (String, String, CultureInfo, CompareOptions)

Сравнивает два указанных объекта String, используя указанные правила, и возвращает целое число, указывающее их относительную позицию в заказ.

Возвращает

Int32 32-разрядное целое число со знаком, указывающее лексическое отношение между strA и strB, как показано в следующей таблице

Условие значения

  • Менее нуля strA предшествует strB в порядке сортировки.
  • Нулевой strA находится в той же позиции, что и strB в порядке сортировки.
  • StrA больше нуля следует за strB в порядке сортировки.

Пример * +1031 ** * одна тысяча тридцать две string Message1 = "No need of validation"; string Message2 = "No need of validation for certain members only"; string Message3 = "Validation for this member - No need of validation"; string Message4 = "no need of validation"; Console.WriteLine(string.Compare("No need of validation", Message1, StringComparison.InvariantCultureIgnoreCase)); Console.WriteLine(string.Compare("No need of validation", Message2, StringComparison.InvariantCultureIgnoreCase)); Console.WriteLine(string.Compare("No need of validation", Message3, StringComparison.InvariantCultureIgnoreCase)); Console.WriteLine(string.Compare("No need of validation", Message4, StringComparison.InvariantCultureIgnoreCase)); выход

0
-1
-1
0
0 голосов
/ 11 января 2019

Если вы запустите как есть, все 4 будут истинными.

        string Message = "No need of validation";
        Console.WriteLine("1 : {0}", Message.IndexOf("No need of validation", StringComparison.CurrentCultureIgnoreCase));
        Message = "No need of validation for certain members only";
        Console.WriteLine("2 : {0}", Message.IndexOf("No need of validation", StringComparison.CurrentCultureIgnoreCase));
        Message = "Validation for this member - No need of validation";
        Console.WriteLine("3 : {0}", Message.IndexOf("No need of validation", StringComparison.CurrentCultureIgnoreCase));
        Message = "no need of validation";
        Console.WriteLine("4 : {0}", Message.IndexOf("No need of validation", StringComparison.CurrentCultureIgnoreCase));

Это потому, что игнорируя регистр, строка 'сравнения' существует где-то в каждой строке вашего сообщения, поэтому индекс всегда будет 0 или выше.

Если вы хотите сравнить, равны ли строки друг другу независимо от регистра, вам следует вместо этого использовать строку сравнения:

        Message = "No need of validation";
        Console.WriteLine("1 : {0}", string.Compare(Message,"No need of validation", true));
        Message = "No need of validation for certain members only";
        Console.WriteLine("2 : {0}", string.Compare(Message, "No need of validation", true));
        Message = "Validation for this member - No need of validation";
        Console.WriteLine("3 : {0}", string.Compare(Message, "No need of validation", true));
        Message = "no need of validation";
        Console.WriteLine("4 : {0}", string.Compare(Message, "No need of validation", true));

Что даст вам желаемый результат.

...