我有一个这样的文件列表:
['../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', ..]
现在,如何按正确的顺序对它们进行排序?
我想我可以给你一个主意。如果名称模式保持不变,那么这就成功了!
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
希望有效!
| 归档时间: |
|
| 查看次数: |
622 次 |
| 最近记录: |