图像缩略图

自然订单文件名排序

版本2.1.0(18.6 kB) 斯蒂芬Cobeldick.
文件名或文件路径的自然顺序排序,具有可定制的数字格式。

287下载

更新2019年9月26日

查看许可证

编辑注意:此文件被选为Matlab Central本周精选

要对单元格数组中的所有字符串进行排序,请使用NATSORT:
//www.tatmou.com/matlabcentral/fileexchange/34464-customizable-natural-order-sort
使用NATSORTROWS对字符串单元格数组的行进行排序:
//www.tatmou.com/matlabcentral/fileexchange/47433-natural-order-row-sort

### 概括 ###

字母数字类型的字符串单元格数组(1xN char)。对字符串进行排序,请考虑这些字符串中出现的任何数字子字符串的值。例如:比较

>> A = {'a2.txt', 'a10.txt', 'a1.txt'};
> >排序(A)
ans ='a1.txt''a10.txt''a2.txt'
>> natsortfiles(a)
Ans = 'a1.txt' 'a2.txt' 'a10.txt'

默认情况下,NASORTFILES将所有连续数字解释为整数数字,可以使用正则表达式指定数字子字符串识别:有关详细信息,请参阅NATSORT。

natsortfiles不会执行天真的自然秩序,但单独排序文件名和文件扩展,以确保字典排序,其中较短的文件名始终在更长的内容中排序。同样在每个文件分隔字符下拆分文件路径,并且文件层次结构的每个级别都是单独排序的。

###有程序和单元格数组的示例###

d ='c:\ test';
S = dir (fullfile (D ' * . txt '));
n = natsortfiles({s.name});
对于k = 1:numel(n)
fullfile (D N {k})
结尾

###文件依赖项###

自然秩序排序由函数natsort(文件Exchange 34464)提供。NatsortFiles支持所有Natsort的可选输入。金宝app

### 例子 ###

>> B = {'test_new.m';“test-old.m”;' test.m '};
>> sort(B) %注释'-'排序在'.'之前:
ans =.
'test-ormal.m'
'test.m'
“test_new.m”
>> NatsortFiles(b)更长的较短名称(字典排序):
ans =.
'test.m'
'test-ormal.m'
“test_new.m”

>> C = {'test2.m';“test10-old.m”;“test.m”;“test10.m”;' test1.m '};
>>排序(c)%错误数字订单:
ans =.
'test.m'
“test1.m”
'test10-old.m'
'test10.m'
“test2.m”
>> NatsortFiles(c)%更短的名称:
ans =.
'test.m'
“test1.m”
“test2.m”
'test10.m'
'test10-old.m'

% %目录名称:
>> d = {'a2-all \ test.m';'a10 \ test.m';'a2 \ test.m';'a1archive.zip';'a1 \ test.m'};
>>排序(d)错误的数字顺序错误,' - '在'\'之前排序:
ans =.
“A10 \ test.m”
'a1 \ test.m'
“A1archive.zip”
'A2-Old \ test.m'
'a2 \ test.m'
>> NatsortFiles(D)更长的较短名称(字典排序):
ans =.
“A1archive.zip”
'a1 \ test.m'
'a2 \ test.m'
'A2-Old \ test.m'
“A10 \ test.m”

引用作为

斯蒂芬Cobeldick(2020年)。自然订单文件名排序(//www.tatmou.com/matlabcentral/fileexchange/47434-natural-order-filename-sort), MATLAB中央文件交换。检索

评论和评级(51

布雷特补助金

非常有帮助-非常感谢作者

大卫Jimenez-Grande

John Kearns.

GeunHwan金

creatlee.

珍娜

易于使用和做的工作

Sergiy鲁金

像魅力一样,非常感谢分享这个!

H.S.

谢谢!

jure tica

只是我需要的。谢谢!

Lars Loetgering.

迈克尔·萨曼

不错的工作!

Ahmad Obeid.

优秀作品

安东尼奥Susin

Aditya Kiran GH.

爱它。这么多努力救了我。

Zeba艾哈迈德

Peihan Tu.

Stefano Caschera.

禅定需要

很有帮助。谢谢你的贡献。

Arslan Ahmed Awan.

感谢您。

ANU_M.

杰出的!

基兰PS.

杨京

非常有用的功能,谢谢分享!

SörenHufschmidt.

Niravkumar Ambaliya.

完美的工作。很棒的工作。谢谢。

Luis Ciria

好的!

Tektao.

Tektao.

jurgen vl.

杨冉

非常感谢!

凯文何

非常有用的功能。谢谢你。

Tatyana P.

谢谢!伟大的事情帮助了很多!

坎贝尔克Suat Gurel.

玛丽亚米

非常感谢,非常有帮助!

拉胡尔Kumar Sevakula

谢谢你!这是优秀的。像预期的那样工作。

保罗

1月

这是一个强大的、可靠的、高效的和有良好文档记录的工具。在许多情况下都需要字符串或文件名的自然排序。谢谢你。

Alutsyah Luthfian

非常有帮助!谢谢...
而且你的不断提醒不使用eval,我也非常感谢。

ayu dyah.

多谢!

akb阿克巴

非常感谢,
真的帮了我。

胡石

非常感谢!

爱屋及乌

谢谢!

Sanggon金

非常感谢你。

Sid.Sapien.

谢谢,非常方便。

斯蒂芬Cobeldick.

“完全像Windows一样列出文件”并不容易。Windows将非字母数字的打印字符放在首位,但它们的顺序没有明确指定:您知道为什么Windows将'~'放在'+'之前,'_'放在'='之前,尽管这不是它们的字符代码顺序?我不喜欢。Windows还有什么其他特殊字符顺序?你能告诉我这张订单具体在哪里吗?

然后存在_Which_Windows排序顺序的问题:文件资源管理器排序顺序或PowerShell排序顺序?Win2k排序顺序,MS Excel排序顺序,或Vista / Win7排序顺序?它们都是不同的......然后为什么WANDEW Windows操作系统,其他主要操作系统呢?哪个?

不仅是“Windows排序顺序”的定义非常模糊,这个更改实际上会破坏NATSORT:我清楚地声明NATSORT根据两个简单的标准进行排序:字符代码和数字值。这意味着NATSORT可以提供与许多用其他语言编写的“自然顺序排序”函数相同的排序(做一个互联网搜索),所有的排序都根据我提交的相同的基本规则,并可以使用非常精确定义的字符代码顺序提供相同的排序顺序。您所建议的是用定义不好的专有排序顺序代替开放定义的和普遍已知的字符代码顺序。有趣的…

但是,当然有可能编写这样一个函数:给我一个定义“Windows排序顺序”的引用,然后我可以帮助你。

将要

这真的很有用,但我刚刚发现Windows将列出比with号的“_”更高的文件,natsort和natsortfiles将列出数字和字母后的“_”。

例如。Windows列表:
带有_File
1.文件1
2.文件2
一个文件
B文件

在Matlab:

>> natsort({'1.文件1';'2。文件2';'文件';'b文件';'_文件'})

ans =.

“1。文件1 '
“2。文件的
“文件”
'b文件'
“带有_File”

你能在更新中实施这一点吗?或者建议如何自定义全面列出文件的函数?

尤利西斯C.

仓颉关

它真的很有用!谢谢。

摩西

哇,先生,我的帽子。伟大的功能和文档。非常感谢!

摩西

萨达湿婆

斯特

谢谢,这正是我要寻找的是品种的名称文件
1-d ...,2-d ...,......等等。

更新

魅惑

*修复char

2.0.0

* NATSORT总重写:更快和更少的内存。
*改进HTML文档。
*包括测试点。

1.6.0.0.

*添加(非常有用)调试输出参数。

1.5.0.0.

*改善Blurb和HTML。

1.5.0.0.

*次要帮助编辑。

1.5.0.0.

*添加HTML文档。

1.5.0.0.

*改进输入检查。
*包含NATSORT函数。

1.4.0.0

*更清晰地描述文件依赖项。
*改善FilePath排序的示例。

1.3.0.0.

*提高功能描述。
*更好的例子。

1.2.0.0

- 仅更新文档,改进示例。

1.1.0.0.

- 完全致谢。