我获取文件夹中的所有文件并将它们放入字符串数组中。我遇到的问题是字符串数组不会与数字大于9的页面排序。什么是让字符串数组按正确方式排序的最简单方法?你可以看到第一个pdf是A10C,它应该出现在A9C下,但是它首先显示出来。 B10C也发生了同样的事情:
\\server\archives\PAPER\20140818\NJ-140818-A10C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A1C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A2C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A3C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A4C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A5C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A6C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A7C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A8C.pdf
\\server\archives\PAPER\20140818\NJ-140818-A9C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B10C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B1C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B2C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B3C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B4B.pdf
\\server\archives\PAPER\20140818\NJ-140818-B5C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B6C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B7C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B8C.pdf
\\server\archives\PAPER\20140818\NJ-140818-B9C.pdf
答案 0 :(得分:0)
你可以使用正则表达式和linq的组合
var sorted = strs
.OrderBy(s => DateTime.ParseExact(Regex.Match(s, @"PAPER\\(\d+)\\").Groups[1].Value, "yyyyMMdd", CultureInfo.InvariantCulture))
.ThenBy(s => Regex.Match(s, @"(\w)\d+\w.pdf").Groups[1].Value)
.ThenBy(s => int.Parse(Regex.Match(s, @"\w(\d+)\w.pdf").Groups[1].Value))
.ThenBy(s => Regex.Match(s, @"\w\d+(\w).pdf").Groups[1].Value);