将字符串数组转换为字符串。

225

我想将一个字符串数组转换为单个字符串。

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

我想要类似于“Hello World!”的东西。

9个回答

396
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);

4
+1 - 我已经按照@davidg的指示,将Join中的空格去掉,使其正确。 - jamesmortensen
谢谢。我没有注意到尾随空格,即使我将其复制粘贴到我的答案中。 - Dave Ward
3
我还需要在我的字符串之间加入分隔符(逗号和空格),所以我使用了以下代码: var separator = ", "; string.Join(separator , test); - drpawelo
5
好的回答。不过,我建议使用string.Join(string.Empty, test)而不是使用一个空括号。 - now he who must not be named.

79

使用Concat()方法比已经提到的Join()方法稍微更快。它不需要像Join()一样的空分隔符参数。例如:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

string result = String.Concat(test);

因此,它很可能更快。

1
“Concat”更好,在“Join”的内部代码中,它会在每个项目后附加分隔符。但是,“Concat”没有这样的代码,它比“Join”更简单和直接。这是最合适的答案。 - Mr. Squirrel.Downy

31

你所需要的是一个简单的string.Concat()。

string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string result = string.Concat(test);
如果您还需要添加分隔符(空格,逗号等),那么应该使用string.Join()。
string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);
如果您需要对具有数百个元素的字符串数组执行此操作,则从性能角度考虑,string.Join()更好。只需提供一个""(空白)参数作为分隔符。StringBuilder也可以用于提高性能,但代码会变得有点长。

2
如果您要连接4个或更少的字符串,则“Concat”和“Join”比“StringBuilder”更快。 - Quality Catalyst
这是最好的答案! - Humberto Rodrigues

24

尝试:

String.Join("", test);
应该返回一个将两个元素拼接在一起的字符串。 "" 表示你想要这些字符串之间没有任何分隔符。

这样不会使得"HelloWorld!"中的单词之间没有空格吗? - jamesmortensen
1
@jmort253 - 问题中的原始字符串 "Hello " 已经有一个尾随空格。如果空格不存在,那么您是正确的,使用 " " 作为分隔符会更有意义。 - davidg

8
在接受的答案中,String.Join 在使用中并不是最佳实践。应该使用 String.Concat,因为 OP 在第一项中包含了一个尾随空格:"Hello "(而不是使用 null 分隔符)。
然而,由于 OP 请求结果为 "Hello World!",所以 String.Join 仍然是适当的方法,但尾随空格应该移动到分隔符中。
// string[] test = new string[2];

// test[0] = "Hello ";
// test[1] = "World!";

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);

解释何时一个比另一个更适合的要点。 - Lord Drake

7
Aggregate也可以用于相同的目的。
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);

1
这是一种极其浪费的方法来实现 String.Join,因为会构造多个额外的字符串。请阅读 https://dev59.com/h3VC5IYBdhLWcg3wrDJd 以获取正确的 Aggregate 变体。 - Alexei Levenkov

3
    string ConvertStringArrayToString(string[] array)
    {
        //
        // Concatenate all the elements into a StringBuilder.
        //
        StringBuilder strinbuilder = new StringBuilder();
        foreach (string value in array)
        {
            strinbuilder.Append(value);
            strinbuilder.Append(' ');
        }
        return strinbuilder.ToString();
    }

4
这只是手动实现string.Join(" ", array)(除了你的方法会在最后加上空格)。为什么不直接使用库中的方法呢? - davidg
2
@davidg - Ashwini可能是新手。学习使用现有工具并克服大学时期的“我必须自己做”的心态需要一些时间适应。对我来说也是如此。最终,人们会想知道为什么他们的同事能够比他们更好地编写代码,然后他们就会看到代码库和重用的价值。 - jamesmortensen
无论我记得什么,我都尽力帮助,这就是全部。如果有更好的解决方案,欢迎随时发布。@ jmort:我已经工作了4年了...我没有你所说的那种心态...没有人是完美的...在多年的经验中,你会学到更多...希望你不会否认这个事实... - programmer
@Ashwini - 不是想冒犯你。只是根据我与不同工程师合作的经验回答@davidg的问题。 - jamesmortensen
2
此外,连接的字符串末尾会多出一个空格。因此,这并不完全符合问题要求。 - jamesmortensen

0

我使用了这种方法来加快我的项目:

RichTextBox rcbCatalyst = new RichTextBox()
{
    Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();

return text;

RichTextBox.Text 会自动将数组转换为多行字符串!


-10

像这样:

string str= test[0]+test[1];

你也可以使用循环:

for(int i=0; i<2; i++)
    str += test[i];

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