如何使用RegEx将文件名的前缀ID#转换为List数组?或者如果您知道更好的方法,可以采用其他方法。
我只想要111,222和333值(ID#)。
var myList = new List<string>();
myList.Add("foo/0000-0000-0001/111_Age_3_20150518T0800-0400.txt");
myList.Add("foo/0000-0000-0002/222_Bal_3_20120518T0800-0400.txt");
myList.Add("foo/0000-0000-0003/333_DDS_3_20140518T0800-0400.txt");
var filteredFiles2.Select(x => Regex.Match(x, @"^[^\d]+").Value).Distinct();
答案 0 :(得分:1)
您可以使用Path
类获取文件名,然后将其拆分:
var filteredFiles = myList.Select(x => System.IO.Path.GetFileNameWithoutExtension(x).Split('_').First()).ToList();
答案 1 :(得分:0)
您是否需要Regex功能(即课程要求)?
如果没有,你可以强制它,如下所示:
private List<String> myList;
private void Init()
{
myList = new List<string>();
myList.Add("foo/0000-0000-0001/111_Age_3_20150518T0800-0400.txt");
myList.Add("foo/0000-0000-0002/222_Bal_3_20120518T0800-0400.txt");
myList.Add("foo/0000-0000-0003/333_DDS_3_20140518T0800-0400.txt");
}
private string[] filtered()
{
var list = new List<String>();
foreach (var line in myList)
{
var split1 = line.Split('/');
if (split1.Length == 3)
{
var split2 = split1[2].Split('_');
if (split2.Length == 4)
{
list.Add(split2[0]);
}
}
}
return list.ToArray();
}