#文件排序 #排序 #路径 #文件路径 #字母数字 #文件

不依赖 std alphanumeric-sort

这个crate可以帮助您对包含数字的文件和文件夹的名称进行排序

30个稳定版本

1.5.3 2023年11月26日
1.5.1 2023年3月22日
1.4.4 2022年3月5日
1.4.3 2021年4月21日
1.0.6 2018年11月13日

#132 in 算法

Download history 6991/week @ 2024-04-21 6527/week @ 2024-04-28 5392/week @ 2024-05-05 10432/week @ 2024-05-12 8302/week @ 2024-05-19 8902/week @ 2024-05-26 7408/week @ 2024-06-02 8446/week @ 2024-06-09 8113/week @ 2024-06-16 9583/week @ 2024-06-23 6836/week @ 2024-06-30 8872/week @ 2024-07-07 6468/week @ 2024-07-14 8366/week @ 2024-07-21 7157/week @ 2024-07-28 8642/week @ 2024-08-04

31,034 每月下载量
用于 40 个crate(23个直接使用)

MIT 许可证

30KB
643

字母数字排序

CI

这个crate可以帮助您对包含数字的文件和文件夹的名称进行排序。

动机和示例

使用Rust的本地sort方法,字符串和路径会被按字典顺序排列。在某些情况下,这并不直观。例如,存在以shot-%N命名的屏幕截图,如shot-2shot-1shot-11。在字典排序后,它们将被排序为shot-1shot-11shot-2。然而,我们通常更希望shot-1shot-2shot-11的顺序。

let mut names = ["shot-2", "shot-1", "shot-11"];

names.sort();

assert_eq!(["shot-1", "shot-11", "shot-2"], names);

因此,在这种情况下,字母数字排序可能非常有用。

let mut names = ["shot-2", "shot-1", "shot-11"];

alphanumeric_sort::sort_str_slice(&mut names);

assert_eq!(["shot-1", "shot-2", "shot-11"], names);
use std::path::Path;

let mut paths = [Path::new("shot-2"), Path::new("shot-1"), Path::new("shot-11")];

alphanumeric_sort::sort_path_slice(&mut paths);

assert_eq!([Path::new("shot-1"), Path::new("shot-2"), Path::new("shot-11")], paths);

关于compare_*函数和sort_*函数

要对切片进行排序,代码也可以写成这样,

use std::path::Path;

let mut paths = [Path::new("shot-2"), Path::new("shot-1"), Path::new("shot-11")];

paths.sort_by(|a, b| alphanumeric_sort::compare_path(a, b));

assert_eq!([Path::new("shot-1"), Path::new("shot-2"), Path::new("shot-11")], paths);

但是不推荐这样做,因为compare_*函数在每次执行时都试图将数据(例如PathCStr)转换为&str,因此它们在排序切片时比sort_*函数慢。

版本 1.31.4

尽管顺序有所变化,但在API中没有进行破坏性的更改。

  • "0001""001"大,而不是相等。
  • "" 大于 "1",而不是小于。 "第1章" 仍然小于 "第1-2章",即使 "" 大于 "-"

无标准

禁用默认功能以编译此crate而不使用std。

[dependencies.alphanumeric-sort]
version = "*"
default-features = false

基准测试

cargo bench

Crates.io

https://crates.io/crates/alphanumeric-sort

文档

https://docs.rs/alphanumeric-sort

许可证

MIT

无运行时依赖