Я хочу сравнить две строки, и одна из них может быть строкой null
, используя StringComparison.InvariantCultureIgnoreCase
функцию C#. Это создает исключение во время выполнения, когда встречается строка null
. Что мне делать, чтобы сравнить даже строки null
?сравнение строк в C#
ответ
Как варианты уже дано вам, вы можете рассмотреть возможность использования 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"));
}
}
Является ли string.Compare в примере Aliostads ниже эквивалентным использованию StringComparer? –
@ Фредрик: Я не знаю, если честно. Надеюсь, это так, но вполне могут быть тонкости ... –
Вы можете использовать
if (String.IsNullOrEmpty(yourString)) { // If true... }
Используйте
string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);
преимущество использования этого является то, что он будет возвращать 0 (равны), если две строки null
- что ожидаемый результат.
Опирается на то, что вы хотите, когда строка равна null.
Вы можете просто упасть обратно в пустую строку, как это: (str ?? "").Compare(...)
Так что «null» равно «»? –
это с поста я помню @ Джон тарелочкам, отвечая на вопрос о сравнении:
string myCompareString = "compare me";
if(myCompareString.Equals(myOtherMaybeNullString, StringComparison.InvariantCultureIgnoreCase))
{
// blah blah
}
Вызывает сравнение с строки вы знаете, не равно нулю в строку это может быть null (если вы не сравниваете 2 потенциально нулевых строки).
Так как дополнительные 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);
}
}
- 1. Сравнение строк в C++
- 2. Сравнение строк в C
- 3. Сравнение строк в C#
- 4. Сравнение строк в C++
- 5. сравнение строк в C
- 6. Сравнение строк в C#
- 7. Сравнение строк в c
- 8. Сравнение строк в C
- 9. Сравнение строк - C
- 10. Сравнение строк с C++
- 11. Сравнение строк Объективные C
- 12. C++ Сравнение литералов строк
- 13. Сравнение строк с C
- 14. Сравнение 2 строк C#
- 15. C++: Сравнение строк лексикографических
- 16. Сравнение строк C++
- 17. C: Сравнение строк
- 18. Beginner C++ - Сравнение строк
- 19. Сравнение длины строк C
- 20. Сравнение двух строк C++
- 21. Сравнение строк C - strcmp()
- 22. сравнение строк C++
- 23. Сравнение строк C++
- 24. Сравнение строк с указателями? Сравнение строк в C
- 25. Сравнение двух строк в C#
- 26. Сравнение строк в Objective C
- 27. Сравнение двух строк в C#
- 28. Сравнение строк в Objective-C
- 29. Сравнение строк в C - strcmp
- 30. Сравнение длины строк в C#
Вы можете проверить, если они пусты сначала с String.IsNullOrEmpty – Pabuc
Какие сравнения вы исполняющей? Равенство или заказ? –
равенство – Vasanth