将字符串数组转换为字符串
Posted
技术标签:
【中文标题】将字符串数组转换为字符串【英文标题】:convert string array to string 【发布时间】:2011-06-18 00:05:53 【问题描述】:我想将字符串数组转换为单个字符串。
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
我想要“Hello World!”之类的东西
【问题讨论】:
【参考方案1】:string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string.Join("", test);
【讨论】:
+1 - 正如@davidg 所指出的那样,我删除了 Join 中的空格以使其正确 谢谢。我没有注意到尾随空格,即使我将其复制粘贴到我的答案中。 我还需要在我的字符串(逗号和空格)之间放置一个分隔符,所以我使用了:var separator = ", ";
string.Join(separator , test);
很好的答案。不过,我建议使用string.Join(string.Empty, test)
而不是empty-paranthesis
。【参考方案2】:
比使用已经提到的Join()
方法稍快 的选项是Concat() 方法。它不需要像Join()
那样的空分隔符参数。示例:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = String.Concat(test);
因此它可能更快。
【讨论】:
Concat
更好,在Join
的内部代码中,它会在每个项目后附加分隔符。但是Concat
没有这样的代码,比Join
更简单直接。这是最合适的答案。【参考方案3】:
你需要一个简单的 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 以提高性能,但它会使代码变长一些。
【讨论】:
Concat
和 Join
比 StringBuilder
快,如果你有 4 个或更少的字符串要连接。
这是最好的答案!【参考方案4】:
试试:
String.Join("", test);
它应该返回一个将两个元素连接在一起的字符串。 ""
表示您希望将字符串连接在一起而不使用任何分隔符。
【讨论】:
那不是“HelloWorld!”吗?单词之间没有空格? @jmort253 - 问题中的原始字符串"Hello "
已经有一个尾随空格。如果空间不存在,那么您是正确的,使用" "
作为分隔符会更有意义。【参考方案5】:
Aggregate
也可以用于相同的。
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
【讨论】:
由于构造了多个额外的字符串,这是实现String.Join
的极其浪费的方法。请阅读***.com/questions/217805/… 了解Aggregate
的正确变体。【参考方案6】:
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();
【讨论】:
这只是手动实现string.Join(" ", array)
(除了你的添加尾随空格)。为什么不直接使用图书馆里的那个?
@davidg - Ashwini 可能是新的。学习使用现有工具并克服大学里“我必须自己做”的心态需要一些时间来适应。它对我有用。最终,人们想知道为什么他们的同事能够围绕他们编写代码,然后他们看到了代码库和重用的价值。
无论我记得什么,我都试图提供帮助。如果有人有更好的解决方案,您可以随时发布。@jmort:我已经工作 4 年了...我不要有你说话的心态......任何人都不完美......多年来你学到的经验......希望你不要否认这个事实......
@Ashwini - 不是想冒犯你。只是根据我与不同工程师合作的经验回答@davidg 的问题。
此外,连接的字符串将在其末尾附加一个额外的空格。所以这并不完全符合问题。【参考方案7】:
在接受的答案中,String.Join 并不是其用法的最佳实践。应该使用 String.Concat,因为 OP 在第一项中包含一个尾随空格:“Hello”(而不是使用空分隔符)。
但是,由于 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);
【讨论】:
【参考方案8】:我用这种方式让我的项目更快:
RichTextBox rcbCatalyst = new RichTextBox()
Lines = arrayString
;
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();
return text;
RichTextBox.Text 会自动将您的数组转换为多行字符串!
【讨论】:
【参考方案9】:像这样:
string str= test[0]+test[1];
你也可以使用循环:
for(int i=0; i<2; i++)
str += test[i];
【讨论】:
以上是关于将字符串数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
在javascript中如何将字符串转换为数组和数组转换为字符串