将多个路径中的多个文件名提取为多个字符串

本文关键字:提取 字符串 文件名 路径 | 更新日期: 2023-09-27 18:11:30

我有一个字符串:

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 "

分隔符总是"|"。文件名和路径总是不同的。字符串中路径和文件名的实际数量也可能不同。有时字符串中可能有3个路径/文件名,有时可能多达15个以上。

如何在c# 3.5+中做到这一点?

将多个路径中的多个文件名提取为多个字符串

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

或短:

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

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

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

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

之类的内容

步骤2:对于数组中的每个字符串,切掉直到最后一个斜杠的所有内容。使用实例files[i] = files[i].Substring(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);
        }

字符串。分开就行了。