我有一个字符串:
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 +中执行此操作?
答案 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会做到这一点。