2016-10-16 5 views
-2

Я пытаюсь проверить, существует ли значение в массиве строк. Ниже работает, но когда я попробовал следующий блок кода, он потерпел неудачу.Ошибка сравнения строки C#

bool exixts; 
string toCheck= "jupiter"; 

string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"}; 

if(printer.Contains(toCheck)) 
{ 
    exists = true; 
} 

Как проверить чувствительность и чувствительность к корпусу?

Я попытался это

bool exixts; 
string toCheck= "jupiter "; 

string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"}; 
if(printer.Contains(toCheck.Trim(),StringComparison.InvariantCultureIgnoreCase))) 
{ 
    exists = true; 
} 

ответ

1

Или вы можете сделать так,

bool exists = printer.Any(x=> x == toCheck.Trim()); 

Надежда помогает,

+0

.Any лучше или .Contains является лучше, какой из них предпочтительнее? – Kurkula

+1

@Kurkula Проверьте [это] (http://stackoverflow.com/questions/23526773/what-is-the-difference-between-contains-and-any-in-linq). На мой взгляд, Any лучше, чем сравнение. – Berkay

+0

Будет ли любой StringComparer.OrdinalIgnoreCase также? – Kurkula

2

IEnumerable<string>.Contains(value, comparer) ожидает сравнить экземпляр класса, а не значение перечисления.

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

//if(printer.Contains(toCheck.Trim(),StringComparison.InvariantCultureIgnoreCase))) 
if (printer.Contains(toCheck.Trim(), StringComparer.OrdinalIgnoreCase))