2014-06-16 63 views
0

我有一个List<string>包含大约10个字符串。 值如下:如何拆分服务器地址并将其存储在列表中

\\Server\Site\MySite\File1.xml 
\\Server\Site\MySite\File2.xml 
\\Server\Site\MySite\File2.xml 
....................... 
\\Server\Site\MySite\File10.xml 

我需要提取\MySIte\File1.xml\MySite\File10.xml并将其存储在另一个列表。

我试图使用Split关键字,并使用另一个列表来填充拆分的字符串。但它似乎并没有给出正确的答案。

下面是代码:

for(int index=0;index<list.Count;list++) 
{ 
    string[] myArray=list[index].Split('\\'); 

    for(int innerIndex=0;innerIndex<myArray.Length;innerIndex++) 
    { 
     anotherList[innerIndex]=myArray[2]+"\\"+myArray[3]; 
    } 
} 

专家,请帮助。

回答

0

你不需要太辛苦的工作,如果你知道所有的字符串

的输入
str.Substring(str.IndexOf("\\MySite")) 
+0

让我来试试您的解决方案 – Anurag

0

一个字:LINQ!

var results = (from x in source 
       let parts = x.Split('\\') 
       select String.Join("\\", parts.Skip(1)).ToArray(); 
+0

让我尝试你的解决方案 – Anurag

+0

列表 = results.ToList();如果我尝试将LINQ查询的结果绑定到列表,则会出现错误。请帮助 – Anurag

+0

您的LINQ查询不起作用。它再次给我原始列表。还有其他建议吗? – Anurag

0

您可以使用以下代码。

 List<string> source = new List<string>(); 
     source.Add(@"\\Server\Site\MySite\File1.xml"); 
     source.Add(@"\\Server\Site\MySite\File2.xml"); 
     source.Add(@"\\Server\Site\MySite\File2.xml"); 
     source.Add(@"\\Server\Site\MySite\File10.xml"); 

     foreach(string s in source) 
     { 
      string[] parts = s.Split(new string[]{ Path.DirectorySeparatorChar.ToString() },StringSplitOptions.RemoveEmptyEntries); 
      Console.WriteLine(parts[parts.Length - 1] + Path.DirectorySeparatorChar + 
           parts[parts.Length - 2]); 
     } 
0

我只想\MySite之前删除任何东西,得到休息:使用

测试数据:

List<string> source = new List<string> 
{ 
    @"\\Server\Site\MySite\File1.xml", 
    @"\\Server\Site\MySite\File2.xml", 
    @"\\Server\Site\MySite\File2.xml", 
    @"\\Server\Site\MySite\File10.xml", 
}; 

查询:

var result = 
    source 
    // Start removing at 0 and remove everything before '\MySite' 
    .Select(x => x.Remove(0, x.IndexOf("\\MySite"))) 
    .ToList(); 
相关问题