我正试图找出解决多种类型文件序列的可靠方法。
考虑这些序列
file_0000.jpg
file_0001.jpg
file_0002.jpg等 &安培;
new1File001.jpg
new1File002.jpg
new1File003.jpg
因此需要找出序列码的第一个小数开始的位置。
FileInfo[] files = new DirectoryInfo(@"\\fileserver\").GetFiles("*.*", SearchOption.AllDirectories);
var grouped = files.OrderBy(f => f.Name).GroupBy(f => f.Name.Substring(0, f.Name.LastIndexOf("_")));
显然,这会找到序列编号用“_”分隔的文件序列。我希望它按最后一个十进制序列的第一个小数位置进行过滤。我的正则表达式技巧并不好,即便如此,我也不知道如何在lamba表达式中使用它。
主要问题是,如何找出数字字符串在上述情况下的起点。
任何指针都会很棒!
谢谢,
-Johan
答案 0 :(得分:1)
是的,正则表达式是拯救:
var r = new Regex(@".+(\d{2,}).");
var grouped =
files.
OrderBy(f => f.Name).
GroupBy(f => r.Match(f.Name).Groups[0].Value);