将多个路径中的多个文件名提取为多个字符串
本文关键字:提取 字符串 文件名 路径 | 更新日期: 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);
}
字符串。分开就行了。