字符串数组排序问题

本文关键字:问题 数组排序 字符串 | 更新日期: 2023-09-27 18:19:34

我正在获取文件夹中的所有文件,并将它们放入字符串数组中。我遇到的问题是字符串数组无法正确地对数字大于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

字符串数组排序问题

您可以使用regex和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);