首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >字符串的IEnumerable<char>

字符串的IEnumerable<char>
EN

Stack Overflow用户
提问于 2012-07-26 00:17:52
回答 3查看 94.4K关注 0票数 160

我以前从来没有遇到过这种情况,但我现在遇到了,而且很惊讶的是,我找不到一种真正简单的方法来将IEnumerable<char>转换为string

我能想到的最好的方法是string str = new string(myEnumerable.ToArray());,但对我来说,这似乎会创建一个新的char[],然后从它创建一个新的string,这似乎很昂贵。

我本以为这会是.NET框架中的常见功能。有没有更简单的方法来做这件事?

对于那些感兴趣的人,我想使用它的原因是使用LINQ来过滤字符串:

代码语言:javascript
复制
string allowedString = new string(inputString.Where(c => allowedChars.Contains(c)).ToArray());
EN

回答 3

Stack Overflow用户

发布于 2012-07-26 00:19:38

从.NET 4开始,许多字符串方法都以IEnumerable作为参数。

代码语言:javascript
复制
string.Concat(myEnumerable);
票数 22
EN

Stack Overflow用户

发布于 2014-10-24 12:31:15

以下是StringBuilder答案的一个更简洁的版本:

代码语言:javascript
复制
return charSequence.Aggregate(new StringBuilder(), (seed, c) => seed.Append(c)).ToString();

我使用Jeff Mercado使用的相同测试对此进行了计时,在相同的300个字符序列(32位发布版本)上进行1,000,000次迭代,比更明确的测试慢了1秒:

代码语言:javascript
复制
static string StringBuilderChars(IEnumerable<char> charSequence)
{
    var sb = new StringBuilder();
    foreach (var c in charSequence)
    {
        sb.Append(c);
    }
    return sb.ToString();
}

所以,如果你是累加器的粉丝,那就开始吧。

票数 11
EN

Stack Overflow用户

发布于 2014-08-21 21:21:23

另一种可能性是使用

代码语言:javascript
复制
string.Join("", myEnumerable);

我没有测量性能。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11654190

复制
相关文章

相似问题

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