C#: 将字符列表转换为字符串

17

我正在使用C#和列表(List)解决Coderbyte上的编程挑战。我已经得到了期望的结果,但需要将其作为字符串返回。

我想知道如何将我的字符列表转换为字符串。

先谢谢你。

这是我的代码:

string s = "I love dogs";
int i, j = 0;
List<char> array1 = new List<char>();
List<char> array2 = new List<char>();

for (i = 0; i < s.Length; i++)
{
    if (s.Length == j)
        break;

    if (Char.IsLetter(s[i]))
    {
        array1.Add(s[i]);
    }
    else
    {
        for (j = i; j < s.Length; j++)
        {
            if (Char.IsLetter(s[j]))
            {
                array2.Add(s[i]);
            }
            if (!Char.IsLetter(s[j]) || j == s.Length - 1)
            {
                if (array1.Count >= array2.Count)
                {
                    array2.Clear();
                }
                else
                {
                    array1.Clear();
                    array1.AddRange(array2);
                    array2.Clear();
                }
            }
        }
    }
} // How to convert array1 into String ?

5
string result = new string(array1.ToArray()); - René Vogt
4
虽然你可以保留它们作为列表,但我建议使用StringBuilder而不是List<char>。就我所看到的,你使用列表做的一切事情都可以改用StringBuilder完成。最后只需调用ToString即可。 - Jon Skeet
@René Vogt,这个已经起作用了,非常感谢! - Bennity
下次 @Jon Skeet 可以考虑使用 StringBuilder :)! - Bennity
现在不改用它有什么原因吗?StringBuilder专门为这种任务设计而来。除非这是真的可以随意丢弃的代码,否则我认为使用 StringBuilder 更具惯用性。 - Jon Skeet
1个回答

48

2
var myString = string.Join("", array) 变量 myString = string.Join("", array) - BigChief
6
这里更好的答案是var myString = String.Concat(array1);。它更快,分配的内存更少。 - Frederic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接