C# 将多个路径中的多个文件名提取到多个字符串中

C# 将多个路径中的多个文件名提取到多个字符串中,c#,string,file,path,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

我有一个字符串:

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个新的Sting中,例如:

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

除沫器字符始终为“|”。文件名和路径总是不同的。字符串中路径和文件名的实际数量也可能不同。有时字符串中可能有3个路径/文件名,有时多达15+

在C#3.5+中,我将如何做到这一点

或更短:

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

我会成功的

这是一个快速的两步过程

步骤1:使用
string.Split(char)
获取字符串数组。在您的例子中,类似于
string[]files=filelist.Split(“|”)

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


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

以下是我给您的建议:

        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);
        }

不完全是。。。仍然需要路径的文件名部分。这一个在最后杀死了空白:var文件名= StrugToopStudio。SLEDE(new []{“}”,StrugStudioStest.RevEvEnTyEnter条目)。选择(item = >路径.GETFILENAMEAM(item));如果我尝试执行一个:Console.WriteLine(“'”+文件名[0]+“”);使用您的方法,我遇到以下错误:无法将[]索引应用于'System.Collections.Generic.IEnumerable'类型的表达式。如何在方法中使用文件名输出。您的方法是否也存在第一个答案的尾随空格问题?您可以添加一个
.ToList()
,以便让LINQ立即计算表达式。我使用您的方法获得尾随空格,但最后一个文件名除外。例如:“NetSparkle(4).txt”在txt中的“t”和“.”后面有一个空格@fraXis:这必须在您的数据中-您可以使用
Trim()
,即
。选择(x=>Path.GetFileName(x.Trim())
var fileNames = input.Split('|')
                     .Select(Path.GetFileName)
                     .ToList();
        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);
        }