sorting - 排序目录文件
问题描述
我有以下目录:
- 模组01
- 模组02
- 模组03
- ...
- 模组100
当我使用
(list (directory-files dir t "\\(mod\\)\\([0-9]\\)" nil))
输出是:
- 模组01
- 模组02
- 模组03
- ...
- 模组10
- 模组100
- ...
- 模组99
如您所见,mod100的位置不正确。所需的输出是:
- 模组01
- 模组02
- ...
- 模组10
- 模组11
- ...
- 模组100
感谢您的意见
解决方案
提供一个提取数字部分的自定义谓词函数:
(sort
(directory-files dir t "\\(mod\\)\\([0-9]\\)" nil)
(lambda (x y)
(<
(string-to-number (replace-regexp-in-string ".*mod\\([[:digit:]]+\\).*" "\\1" x))
(string-to-number (replace-regexp-in-string ".*mod\\([[:digit:]]+\\).*" "\\1" y)))))
推荐阅读
- java - 给定表达式集的正则表达式匹配(提取最后一列元素)
- xamarin - 如何在 Xamarin webview 中加载在线 pdf 文件?
- sql - 使用触发器检查 SQL Server 中的输入时如何忽略一些无效行?
- https - 我应该如何使用 android 令牌?
- angular - Angular 中每个客户的一个构建,不同的全局风格
- php - 获取除字段 Laravel: Excel 之外的所有行
- string - 何通过多个标签拆分字符串,然后一个一个地处理它
- javascript - 如何在 React 应用程序中使用纯 JS 小部件
- json - Spring boot - 如果响应状态为 500/503,用户没有收到响应正文
- apache - Htaccess - 将 Google bot 图像重定向到正确的图像 URL