Каков наилучший способ получить подстроку массива строк? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть что-то вроде этого:

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });

Каждая строка в «split» имеет знак «@» в начале, и я хочу от нее избавиться. Что было бы идеальным способом получить подстроку этого массива, не входя в цикл for. Могу ли я использовать Linq вместо этого?

Спасибо за внимание:)

Ответы [ 4 ]

3 голосов
/ 23 февраля 2012

Существует перегрузка String.Trim, которая делает именно это: удаляет указанные символы из начала и конца строки:

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
string[] trimmed = split.Select(s => s.Trim('@')).ToArray();

Если ваши строки содержат несколько @ в начале или конце с @, это будет делать больше, чем вы предполагали. В этом случае вы также можете просто использовать String.Substring:

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
string[] trimmed = split.Select(s => s.Substring(1)).ToArray();
1 голос
/ 23 февраля 2012

Помимо обрезки, как предложил Джон, вы можете использовать регулярные выражения:

Regex regex = new Regex("@\\w*");
var userNames = regex.Matches(ListOfUsers).OfType<Match>().Select(x => x.Value);
1 голос
/ 23 февраля 2012
var split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
var cleaned = split.Select(s => s.Substring(1));
0 голосов
/ 23 февраля 2012

Может быть просто добавить

ListOfUsers.Split(new Char[] { ';', ',', ' ', '@' })

, чтобы в каждой подстроке была нужная вам строка.

...