将多个文件名从多个路径提取到多个字符串中

时间:2011-10-14 18:07:22

标签: c# string file path

我有一个字符串:

  

C:\ Users \ O& S-IT \ Desktop \ NetSparkle(4).txt | C:\ Users \ O& S-IT \ Desktop \ NetSparkle(5).txt | C:\ Users \ O& S-IT \ Desktop \ NetSparkle(6).txt | C:\ Users \ O& S-IT \ Desktop \ NetSparkle(1).txt | C:\ Users \ O& S-IT \ Desktop \ NetSparkle(2).txt | C:\ Users \ O& S-IT \ Desktop \ NetSparkle(3).txt

我希望能够从字符串中提取6个文件名,而不需要将它们各自的路径分成6个新的叮咬,例如:

  

“NetSparkle(4).txt”
  “NetSparkle(5).txt”
  “NetSparkle(6).txt”
  “NetSparkle(1).txt”
  “NetSparkle(2).txt”
  “NetSparkle(3).txt”

deliminator字符始终为“|”。文件名将始终与路径不同。字符串中的实际路径数和文件名数也可能不同。有时字符串中可能有3个路径/文件名,其他可能多达15 +。

我如何在C#3.5 +中执行此操作?

5 个答案:

答案 0 :(得分:3)

var fileNames = input.Split('|')
                     .Select( x => Path.GetFileName(x))
                     .ToList();

或更短:

var fileNames = input.Split('|')
                     .Select(Path.GetFileName)
                     .ToList();

答案 1 :(得分:2)

var fileNames = myString.Split('|').Select(s => Path.GetFileName(s));

答案 2 :(得分:0)

这是一个快速的两步过程。

第1步:使用string.Split(char)获取字符串数组。在你的情况下,有一些string[] files = filelist.Split('|');

第2步:对于数组中的每个字符串,将所有字符串切断到最后一个斜杠。示例files[i] = files[i].Substring(files[i].LastIndexOf('/') + 1);

我相信您需要+1排除最后一个斜杠。但是,如果它缩短文件名,请将其删除。

答案 3 :(得分:0)

以下是我的建议:

        var stringToExtract = @"C:\Users\O&S-IT\Desktop\NetSparkle (4).txt | C:\Users\O&S-IT\Desktop\NetSparkle (5).txt | C:\Users\O&S-IT\Desktop\NetSparkle (6).txt | C:\Users\O&S-IT\Desktop\NetSparkle (1).txt | C:\Users\O&S-IT\Desktop\NetSparkle (2).txt | C:\Users\O&S-IT\Desktop\NetSparkle (3).txt";

        var fullpaths = stringToExtract.Split(new string[] { " | " }, StringSplitOptions.RemoveEmptyEntries);

        foreach (var fullpath in fullpaths)
        {
            var filename = Path.GetFileName(fullpath);
        }

答案 4 :(得分:-2)

String.Split会做到这一点。