Как лучше всего объединить список строк в комбинированную строку с разделителями. Я в основном обеспокоен тем, когда прекратить добавлять разделитель. Я буду использовать C # для своих примеров, но я бы хотел, чтобы это не зависело от языка.
РЕДАКТИРОВАТЬ: я не использовал StringBuilder, чтобы сделать код немного проще.
Используйте цикл For *
for(int i=0; i < list.Length; i++)
{
result += list[i];
if(i != list.Length - 1)
result += delimiter;
}
Использовать For Loop для установки первого элемента ранее
result = list[0];
for(int i = 1; i < list.Length; i++)
result += delimiter + list[i];
Они не будут работать для IEnumerable, где вы заранее не знаете длину списка, поэтому
Использование цикла foreach
bool first = true;
foreach(string item in list)
{
if(!first)
result += delimiter;
result += item;
first = false;
}
Изменение цикла по каждому элементу
Из решения Джона
StringBuilder builder = new StringBuilder();
string delimiter = "";
foreach (string item in list)
{
builder.Append(delimiter);
builder.Append(item);
delimiter = ",";
}
return builder.ToString();
Использование итератора
Снова от Джона
using (IEnumerator<string> iterator = list.GetEnumerator())
{
if (!iterator.MoveNext())
return "";
StringBuilder builder = new StringBuilder(iterator.Current);
while (iterator.MoveNext())
{
builder.Append(delimiter);
builder.Append(iterator.Current);
}
return builder.ToString();
}
Какие еще есть алгоритмы?