编辑注意:此文件被选为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中央文件交换。检索。
魅惑 | *修复char |
|
2.0.0 | * NATSORT总重写:更快和更少的内存。 |
|
1.6.0.0. | *添加(非常有用)调试输出参数。 |
|
1.5.0.0. | *改善Blurb和HTML。 |
|
1.5.0.0. | *次要帮助编辑。 |
|
1.5.0.0. | *添加HTML文档。 |
|
1.5.0.0. | *改进输入检查。 |
|
1.4.0.0 | *更清晰地描述文件依赖项。 |
|
1.3.0.0. | *提高功能描述。 |
|
1.2.0.0 | - 仅更新文档,改进示例。 |
|
1.1.0.0. | - 完全致谢。 |
灵感来自:asort:行人字母数字字符串分拣机那sort_nat:自然命令排序那GetFullPath那号码到科学前缀那可定制的自然顺序排序那单词的号码那自然秩序行排序那单词到号码那科学数字前缀那下一个可用文件名
启发:单词到号码那MRI数据的参数映射脚本那可定制的自然顺序排序那单词的号码那自然秩序行排序那交互式正则表达式工具那下一个可用文件名
非常有帮助-非常感谢作者
易于使用和做的工作
像魅力一样,非常感谢分享这个!
谢谢!
只是我需要的。谢谢!
不错的工作!
优秀作品
爱它。这么多努力救了我。
很有帮助。谢谢你的贡献。
感谢您。
杰出的!
非常有用的功能,谢谢分享!
完美的工作。很棒的工作。谢谢。
好的!
非常感谢!
非常有用的功能。谢谢你。
谢谢!伟大的事情帮助了很多!
非常感谢,非常有帮助!
谢谢你!这是优秀的。像预期的那样工作。
这是一个强大的、可靠的、高效的和有良好文档记录的工具。在许多情况下都需要字符串或文件名的自然排序。谢谢你。
非常有帮助!谢谢...
而且你的不断提醒不使用eval,我也非常感谢。
多谢!
非常感谢,
真的帮了我。
非常感谢!
谢谢!
非常感谢你。
谢谢,非常方便。
“完全像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”
你能在更新中实施这一点吗?或者建议如何自定义全面列出文件的函数?
它真的很有用!谢谢。
哇,先生,我的帽子。伟大的功能和文档。非常感谢!
谢谢,这正是我要寻找的是品种的名称文件
1-d ...,2-d ...,......等等。