C # Split String и использование в операторе If - PullRequest
1 голос
/ 03 марта 2011

Есть ли более элегантный способ сделать это.

У меня есть строка, в которой я хотел бы разбить и использовать отдельно в операторе if.Например:

string people = "John;Joe;Jane;Mike";
string[] names = people.Split(';');

if(person == "John" || person == "Joe" || person == "Jane" || person == "Mike")
{
    ....
}
else
{
    ....
}

Думаю, есть лучший способ сделать это.

Спасибо.

Ответы [ 5 ]

6 голосов
/ 03 марта 2011
if(names.Contains(person)) { ... }
2 голосов
/ 03 марта 2011
string people = "John;Joe;Jane;Mike";
string[] names = people.Split(';');

if(names.Contains(person))
{
    ....
}
else
{
    ....
}

Contains<T> - это метод расширения IEnumerable<T> (а массив - IEnumerable<T>), поэтому вы можете использовать его по результату Split, чтобы проверить, содержит ли он искомую строку.

1 голос
/ 03 марта 2011
string people = "John;Joe;Jane;Mike";
List<string> names = new List<string>(people.Split(';'));

if(names.Contains(person))
{
    ....
}
else
{
    ....
}

Коллекции ваших друзей:)

1 голос
/ 03 марта 2011

Это будет сделано:

if(names.Contains(person))
0 голосов
/ 03 марта 2011

Сделайте это:

string people = ";John;Joe;Jane;Mike;"; 
string findPerson = "Joe";

if (people.contains(String.Format(";{0};", findPerson)) {
  ... it's found...
} else {
  ... it's not found ....
}

обратите внимание, что я добавил разделители к началу и концу исходной строки. Кроме того, мы добавляем разделители в начало и конец переменной findPerson. Это гарантирует, что мы не попадем в частичное совпадение. Например, найти «Крис» в «Кристоф»

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