Каков наилучший способ объединения списка строк в объединенную строку с разделителями. Я в основном обеспокоен тем, когда перестать добавлять разделитель. Я буду использовать С# для своих примеров, но я бы хотел, чтобы это было агностическим языком.
EDIT: я не использовал 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;
}
Изменение в цикле foreach
От решения Jon
StringBuilder builder = new StringBuilder();
string delimiter = "";
foreach (string item in list)
{
builder.Append(delimiter);
builder.Append(item);
delimiter = ",";
}
return builder.ToString();
Использование Iterator
Снова от Джона
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();
}
Какие еще существуют алгоритмы?