【发布时间】:2010-02-11 15:44:04
【问题描述】:
如果我有一个数组并执行ToString(),那只是将数组值串在一个长的逗号分隔字符串中,还是在数组上不可能?
【问题讨论】:
-
你试过了吗,并检查了输出?
-
我真的不知道,但你可以试试...
-
我有一个 MyCustomType[] 数组而不是 string[]
标签: c#
如果我有一个数组并执行ToString(),那只是将数组值串在一个长的逗号分隔字符串中,还是在数组上不可能?
【问题讨论】:
标签: c#
选项 1
如果你有一个strings 数组,那么你可以使用String.Join:
string[] values = ...;
string concatenated = string.Join(",", values);
选项 2
如果您正在处理任何其他类型的数组并且您使用的是 .NET 3.5 或更高版本,则可以使用 LINQ:
string concatenated = string.Join(",",
values.Select(x => x.ToString()).ToArray());
【讨论】:
IEnumerable 和IEnumerable<T>(其中T 是数组的类型)。我不确定我是否理解您关于string.Split 的问题。
c 的 char[] 数组,那么您只需要 new string(c); 作为出色地。我在这里添加它是因为当谷歌刚刚提醒我时我感到很愚蠢;o)
您当然可以这样做,但这不是默认行为。最简单的方法(无论如何从 .NET 3.5 开始)可能是:
string joined = string.Join(",", array.Select(x => x.ToString()).ToArray());
MoreLINQ 有一个内置方法可以做到这一点:
string joined = array.ToDelimitedString();
或明确指定分隔符:
string joined = array.ToDelimitedString(",");
【讨论】:
它没有(如您所见)。
对于字符串数组,您可以使用:
string.Join(",", myArray)
对于其他数组,我认为您需要自己编写代码。
【讨论】:
不,数组的 ToString 将为您提供对象的类型名称字符串。请改用 String.Join 方法。
【讨论】:
要达到这个效果,你应该调用 String.Join(string, string[])
即
string[] stringArray = new string[] { "a", "b", "c" };
string.Join(",", stringArray);
【讨论】:
您可以使用string.Concat(Object[] args)。这会调用args 中每个对象的ToString() 方法。在自定义类中,您可以重写ToString() 方法来实现自定义字符串转换,如下所示:
public class YourClass
{
private int number;
public YourClass(int num)
{
number = num;
}
public override string ToString()
{
return "#" + number;
}
}
现在您可以连接自定义类的实例数组:
YourClass[] yourArray = { new YourClass(1), new YourClass(2), new YourClass(3) };
string concatenated = string.Concat(yourArray);
不幸的是这个方法没有添加任何分隔符,但我发现它很优雅。变量concatenated 将包含"#1#2#2"。
【讨论】: