Основное решение:
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 )
Вы также можете заменить все вхождения пробелов и таким образом избежать цикла foreach:
string email = "a@a.com, b@b.com, c@c.com";
string[] emails = email.Replace(" ", "").Split(',');
emails.Split(',').Select(email => email.Trim()).ToArray()
Подойдет любой из следующих вариантов. Я бы порекомендовал первый, поскольку он более точно выражает присоединяемую строку.
string[] emails = email.Split(new string[] { ", " }, StringSplitOptions.None);
string[] emails = email.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
Используйте Regex.Split
, чтобы избегать обрезки
var emails = Regex.Split(email, @",\s*");
Вы можете использовать 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();
Используйте String.Trim
в цикле foreach
, или, если вы используете .NET 3.5+, оператор LINQ.
В качестве альтернативы, вы можете разделить, используя регулярное выражение формы:
\s*,\s*
т.е.
string[] emails = Regex.Split(email, @"\s*,\s*");
Оно будет напрямую поглощать окружающие пространства.
Регулярные выражения обычно снижают производительность, но приведенный вами пример показывает, что это то, что вы планируете сделать один раз в своем коде для короткого массива.