我有List<string>
名为项目,列表中的第一项始终如下(已包含分隔符):
string1\\string1
然后其余项目将是没有separator (\\)
的普通字符串。
我正在尝试string.Join
所有这些并获得如下所示的字符串表示。
somestring1\\somestring1\\somestring2\\somestring3
我正在尝试这样的事情,但它没有正确绑定。加入这些的正确方法是什么?:
string path = string.Join(@"", Items.Take(1), string.Join(@"\\", Items.Skip(1)));
更新:
var items = new List<string>();
items.AddRange(HeaderCollection.Select(item => item.Header));
var path = string.Join(@"\\", items.ToArray());
正在制作
somestring1\\somestring1\\\\somestring2
如果我跳过列表中的第一项,则此方法有效。不知道什么会导致双\\\\
var header = string.Join(@"\\", items.Skip(1));
答案 0 :(得分:5)
我希望如此简单:
string path = string.Join(@"\\", Items.ToArray());
例如,这个程序:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<String> list = new List<String>();
list.Add(@"One\\Two");
list.Add(@"Three");
list.Add(@"Four");
String s = String.Join(@"\\", list.ToArray());
Console.WriteLine(s);
}
}
生成此输出:
一\\两个\\三\\四
答案 1 :(得分:1)
我不确定我是否理解。这就是你需要的吗?
string s = list.Aggragate((a, b) => a + "//" + b);
s = list.First() + "//" + s;
答案 2 :(得分:1)
这只是因为调试模式中的\
表示与此\\
类似。这就是我的意思(注意第一行@\
等同于\\
)
<强>解决方案强>
所以你可以尝试这个(不需要跳过第一个):
var path = string.Join(@"\", items.ToArray()); // @"\" not @"\\"