C#中的字符串连接函数使用列表将连接应用于第一项

C#中的字符串连接函数使用列表将连接应用于第一项,c#,string,list,C#,String,List,我有一张有身份证的名单 例如: 123 456 789 我要做的是返回单个字符串中的所有元素,并用“#”分隔它们 我的结果是: #123#456#789 我尝试了以下方法: //Start with a # at first seperatedString = "#"; seperatedString = String.Join(" #", list.ToArray()); 但我的结果是:123#456#789 为什么我的分隔符不应用于字符串的第一个元素 separatedstring=s

我有一张有身份证的名单

例如:

123

456

789

我要做的是返回单个字符串中的所有元素,并用“#”分隔它们

我的结果是: #123#456#789

我尝试了以下方法:

//Start with a # at first

seperatedString = "#";

seperatedString = String.Join(" #", list.ToArray());
但我的结果是:123#456#789


为什么我的分隔符不应用于字符串的第一个元素

separatedstring=separatedstring+String.Join(“#”,list.ToArray())
separatedstring=separatedstring+String.Join(“#”,list.ToArray())

它不应用于第一个元素,因为它是一个“分隔符”。您可以手动将其添加到开头,也可以使用linq,如下所示:

string result = string.Join(string.Empty, (new[] { 123, 456, 789 }).Select(i => "#" + i));

它不应用于第一个元素,因为它是一个“分隔符”。您可以手动将其添加到开头,也可以使用linq,如下所示:

string result = string.Join(string.Empty, (new[] { 123, 456, 789 }).Select(i => "#" + i));

因为string.Join()并不是这样做的,文档中这么说:“在每个元素或成员之间使用指定的分隔符连接指定数组的元素或集合的成员。”这就是
string.Join
的工作原理。看到了吗,因为它的设计就是这样的。。。你能解释一下为什么不这样吗?因为string.Join()并不是这样做的,文档中说:“在每个元素或成员之间使用指定的分隔符连接指定数组的元素或集合的成员。”这就是
string.Join
的工作原理。看到了吗,因为它的设计就是这样的。。。你能解释一下为什么不这样做吗?这很好,因为它还可以防止在列表中第一项的#前面加上空格,我怀疑OP会希望这样做,因为你使用了最初的种子分隔字符串,它只有“#”这很好,因为它还可以防止在列表中第一项的#前面加上空格,我怀疑OP会想要这个空格,因为您使用的是最初的seedseparatedstring,其中只有“#”。