16 февраля 2011 г.

Объединение и разбиение строк: Join и Split

Тема довольно простая, но многие начинающие разработчики при решении задач объединения массива в строку и разбиения строки на части начинают изобретать велосипед.

Пример. Пусть откуда-то нам пришла строка, в которой слова разделены запятыми:

string Months = "январь, февраль, март, апрель, , май";

Стоит задача разбить эту строку на подстроки, выбрав в качестве разделителя запятую. Вот как она решается с помощью метода Split:

string[] MonthArray = Months.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries);

Первый параметр метода представляет собой строковый массив разделителей, состоящий, как правило, из одного элемента (запятая с пробелом). Но если вы приглядитесь повнимательнее, то увидите две запятые, идущие подряд. И между ними ничего нет. Поэтому используется второй параметр, значение которого говорит о том, что, если при разделении будут пустые строки, то нужно их удалить.

Теперь обратная задача. Пусть у нас имеется массив строк (например, какие-нибудь имена), а мы хотим объединить их в одну строку, вставив между ними запятые. Неопытные программисты пытаются решить эту задачу в цикле, на каждой итерации добавляя в конец результирующей строки запятую. Но это неприемлемо хотя бы потому что после последней строки будет запятая.

Вот простое и элегантное решение с использованием стандартного метода Join:

string result = string.Join(", ", MonthArray);

Первый параметр - это строка разделителя (запятая с пробелом), второй - массив строк.

Комментариев нет:

Отправить комментарий