按字母顺序对文件进行排序

Nit*_*Sai 3 dart flutter

我有一个这样的文件列表:

['../page-1.png', '../page-3/png', '../page-2.png', '../page-6.png',  ... '../page-9.png']
Run Code Online (Sandbox Code Playgroud)

我需要根据末尾的数字对这些文件进行排序。我正在使用这个:

imagePaths.sort((a, b) =>
        a.toString().toLowerCase().compareTo(b.toString().toLowerCase()));
Run Code Online (Sandbox Code Playgroud)

其中imagePaths是这些图像的路径列表。

问题 此方法工作正常,直到只有一位数字的文件编号,即如果有一个名为 的文件,'../page-10.png'它会像这样排序到列表中:

['../page-1.png', '../page-10.png', '../page-11.png', '../page-12.png', '../page-2.png', ..]

现在,如何按正确的顺序对它们进行排序?

Shr*_*i L 5

我想我可以给你一个主意。如果名称模式保持不变,那么这就成功了!

  var pages = [
    '../page-1.png',
    '../page-2.png',
    '../page-11.png',
    '../page-12.png',
    '../page-10.png',
  ];

  pages.sort((a, b) =>
      int.parse(a.split('-')[1].split('.')[0]).compareTo(int.parse(b.split('-')[1].split('.')[0])));
  
  print(pages);

//   [../page-1.png, ../page-2.png, ../page-10.png, ../page-11.png, ../page-12.png]
Run Code Online (Sandbox Code Playgroud)

只需分割字符串并解析数字,然后对其进行排序。

参考:https://api.dart.dev/stable/2.10.4/dart-core/Pattern-class.html

希望有效!