【发布时间】:2025-12-22 04:25:12
【问题描述】:
将字符串列表加入组合分隔字符串的最佳方法是什么。我主要关心何时停止添加分隔符。我将使用 C# 作为示例,但我希望它与语言无关。
编辑:我没有使用 StringBuilder 来简化代码。
使用 For 循环
for(int i=0; i < list.Length; i++)
{
result += list[i];
if(i != list.Length - 1)
result += delimiter;
}
使用 For 循环设置之前的第一项
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 循环的变化
来自乔恩的解决方案
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();
}
还有哪些其他算法?
【问题讨论】:
-
别忘了在你的 foreach 循环中设置 first 为 false
-
如果您希望它与语言无关,您不必担心特定于 c# 的优化 (stringbuilder)。
标签: algorithm language-agnostic string