我有以下代码:
StringBuilder sb = new StringBuilder();
sb.Append("Ola");
sb.Append("Jola");
sb.Append("Zosia");
我是否可以使用for
或foreach
遍历StringBuilder
对象
我可以显示它的一个元素吗?例如,Console.WriteLine(sb[0]);
不能工作。
发布于 2015-07-01 18:43:54
您似乎在寻找一个List<string>
,您可以通过索引(list[n]
)和遍历(foreach (string s in list)
)将字符串Add()
到该and。
StringBuilder
不支持这一点,因为它在内部连接所有输入,并且不能在以后区分不同Append()
调用的值。
若要从字符串列表中获取连接的字符串,请参见Append List items to StringBuilder。
发布于 2015-07-01 18:46:48
StringBuilder不是集合或数组。它只是一个类,它提供了一些额外的特性来处理string。它没有实现IEnumerable接口。
sb.Append
方法只是连接字符串,就像您输入" text“+”一些其他文本“一样,但在效率方面要好得多。事实上,每一个"s1“+ "s2”都会导致创建新的字符串。如果你想做1000次,那么它会一次又一次地创建新的字符串,有很多额外的操作要做。StringBuilder提供了一种避免这种情况的方法,当它“渲染”字符串时,它会更新相同的字符串,而不是每次都创建新的实例。
发布于 2015-07-01 18:53:37
StringBuilder
没有实现IEnumerable
,所以你不能在它上面使用foreach
,但是你可以这样做:
StringBuilder sb = new StringBuilder();
sb.Append("Ola");
sb.Append("Jola");
sb.Append("Zosia");
for (int i = 0; i < sb.Length; i++)
{
char c = sb[i];
if (Char.IsUpper(c)) Console.Write('\n');
Console.Write(c);
}
https://stackoverflow.com/questions/31159043
复制相似问题