首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >循环遍历添加到StringBuilder的字符串

循环遍历添加到StringBuilder的字符串
EN

Stack Overflow用户
提问于 2015-07-01 18:42:24
回答 6查看 14.2K关注 0票数 4

我有以下代码:

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
sb.Append("Ola");
sb.Append("Jola");
sb.Append("Zosia");

我是否可以使用forforeach遍历StringBuilder对象

我可以显示它的一个元素吗?例如,Console.WriteLine(sb[0]);不能工作。

EN

回答 6

Stack Overflow用户

发布于 2015-07-01 18:43:54

您似乎在寻找一个List<string>,您可以通过索引(list[n])和遍历(foreach (string s in list))将字符串Add()到该and。

StringBuilder不支持这一点,因为它在内部连接所有输入,并且不能在以后区分不同Append()调用的值。

若要从字符串列表中获取连接的字符串,请参见Append List items to StringBuilder

票数 4
EN

Stack Overflow用户

发布于 2015-07-01 18:46:48

StringBuilder不是集合或数组。它只是一个类,它提供了一些额外的特性来处理string。它没有实现IEnumerable接口。

sb.Append方法只是连接字符串,就像您输入" text“+”一些其他文本“一样,但在效率方面要好得多。事实上,每一个"s1“+ "s2”都会导致创建新的字符串。如果你想做1000次,那么它会一次又一次地创建新的字符串,有很多额外的操作要做。StringBuilder提供了一种避免这种情况的方法,当它“渲染”字符串时,它会更新相同的字符串,而不是每次都创建新的实例。

票数 1
EN

Stack Overflow用户

发布于 2015-07-01 18:53:37

StringBuilder没有实现IEnumerable,所以你不能在它上面使用foreach,但是你可以这样做:

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31159043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档