обрезать все строки в массиве

Основное решение:

def neighbors( list ):
  i = 0
  while i + 1 < len( list ):
    yield ( list[ i ], list[ i + 1 ] )
    i += 1

for ( x, y ) in neighbors( list ):
  print( x, y )
61
задан gotqn 7 August 2015 в 06:43
поделиться

7 ответов

Вы также можете заменить все вхождения пробелов и таким образом избежать цикла foreach:

string email = "a@a.com, b@b.com, c@c.com";    
string[] emails = email.Replace(" ", "").Split(',');
39
ответ дан 24 November 2019 в 16:02
поделиться
emails.Split(',').Select(email => email.Trim()).ToArray()
219
ответ дан 24 November 2019 в 16:02
поделиться

Подойдет любой из следующих вариантов. Я бы порекомендовал первый, поскольку он более точно выражает присоединяемую строку.

string[] emails = email.Split(new string[] { ", " }, StringSplitOptions.None);
string[] emails = email.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
20
ответ дан 24 November 2019 в 16:02
поделиться

Используйте Regex.Split , чтобы избегать обрезки

var emails = Regex.Split(email, @",\s*");
8
ответ дан 24 November 2019 в 16:02
поделиться

Вы можете использовать Trim ():

string email = "a@a.com, b@b.com, c@c.com";
string[] emails = email.Split(',');
emails = (from e in emails
          select e.Trim()).ToArray();
10
ответ дан 24 November 2019 в 16:02
поделиться

Используйте String.Trim в цикле foreach , или, если вы используете .NET 3.5+, оператор LINQ.

0
ответ дан 24 November 2019 в 16:02
поделиться

В качестве альтернативы, вы можете разделить, используя регулярное выражение формы:

\s*,\s*

т.е.

string[] emails = Regex.Split(email, @"\s*,\s*");

Оно будет напрямую поглощать окружающие пространства.

Регулярные выражения обычно снижают производительность, но приведенный вами пример показывает, что это то, что вы планируете сделать один раз в своем коде для короткого массива.

1
ответ дан 24 November 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: