可定制的自然顺序排序

版本3.4.4 (33.3 KB Stephen23
字母数字类型的单元格/字符串/分类数组,具有可自定义的数字格式。

4 k下载

更新2022年1月31日

查看许可协议

编者按:该文件被选为MATLAB中央本周精选

对使用的任何文件名或文件夹名进行排序 NATSORTFILES
用于对字符串/单元格数组的行进行排序 NATSORTROWS
总结
对字符串/单元格/分类数组中的文本进行字母数字排序。考虑到任意数字子字符串的值,按字符代码对文本进行排序。例如:比较
X = {“a2”“a10”“a1”};
排序(X)
ans =“a1”“a10”“a2”
的作用(X)
ans =“a1”“a2”“a10”
默认情况下 的作用 将所有连续数字解释为整数,可以使用正则表达式指定数字子串识别,允许数字子串具有:
  • 一个+ / -的迹象
  • 小数点和小数分数
  • e表示法指数
  • 十进制、八进制、十六进制或二进制记数法
  • 正则表达式支持的标准:查找、量词等。
当然,排序本身也可以被控制:
  • 升序/降序排序方向
  • 字符大小写敏感性/不敏感
  • 数字和字符的相对顺序
  • 数字的相对顺序vs年代
例子
多个整数(例如发布版本号):
>> a = {“v10.6”“v9.10”“v9.5”“v10.10”“v9.10.20”“v9.10.8”};
> >排序(A)%进行比较。
ans =“v10.10”“v10.6”“v9.10”“v9.10.20”“v9.10.8”“v9.5”
> >的作用(一)
ans =“v9.5”“v9.10”“v9.10.8”“v9.10.20”“v10.6”“v10.10”
整数、小数、NaN或Inf数,可能带有+/-符号:
>> b = {“测试+南”“test11.5”“测试- 1.4”“测试”“test-Inf”“测试+ 0.3”};
> >排序(B)%进行比较。
ans =“测试”“测试+ 0.3”“测试+南”“测试- 1.4”“test-Inf”“test11.5”
> >的作用(B,(- +) ? (NaN |正| \ d + \ ? \ d *)”
ans =“测试”“test-Inf”“测试- 1.4”“测试+ 0.3”“test11.5”“测试+南”
整数或十进制数,可能带指数:
>> c = {“0.56 e007”“43依照”“10000”“9.8”};
> >排序(C)%进行比较。
ans =“0.56 e007”“10000”“43依照”“9.8”
> >的作用(C,' \ d + \ ? \ d * (E - +] ? \ d +) ?”
ans =“43依照”“9.8”“10000”“0.56 e007”
%%十六进制数(带有'0X'前缀):
>> d = {“a0X7C4z”“a0X5z”“a0X18z”“a0XFz”};
> >排序(D)%进行比较。
ans =“a0X18z”“a0X5z”“a0X7C4z”“a0XFz”
> >的作用(D,“0 x [0-9A-F] +”' %我
ans =“a0X5z”“a0XFz”“a0X18z”“a0X7C4z”
% %二进制数:
>> e = {“a11111000100z”“a101z”“a000000000011000z”“a1111z”};
> >排序(E)%进行比较。
ans =“a000000000011000z”“a101z”“a11111000100z”“a1111z”
> >的作用(E,“[01]+”“% b”
ans =“a101z”“a1111z”“a000000000011000z”“a11111000100z”
% %例灵敏度:
>> f = {“a2”“样子”“A1”“a10”“A2”“a1”};
> >的作用(F []“ignorecase”%的默认
ans =“A1”“a1”“a2”“A2”“a10”“样子”
> >的作用(F []“matchcase”
ans =“A1”“A2”“样子”“a1”“a2”“a10”
% %排序顺序:
>> g = {' 2 '“一个”“3”“B”' 1 '};
> >的作用(G, [],“提升”%的默认
ans =' 1 '' 2 '“3”“一个”“B”
> >的作用(G, [],“下”
ans =“B”“一个”“3”' 2 '' 1 '
> >的作用(G, [],“num <字符”%的默认
ans =' 1 '' 2 '“3”“一个”“B”
> >的作用(G, [],“char < num”
ans =“一个”“B”' 1 '' 2 '“3”
%% UINT64数字(全精度):
> >的作用({“a18446744073709551615z”“a18446744073709551614z”[]},“陆%”
ans =“a18446744073709551614z”“a18446744073709551615z”

引用作为

Stephen23(2022)。可定制的自然顺序排序(//www.ru-cchi.com/matlabcentral/fileexchange/34464-customizable-natural-order-sort), MATLAB中央文件交换。检索

Baidu
map