图像缩略图

可定制的自然顺序排序

版本3.3.0(29.9KB)由 斯蒂芬。
单元格/字符串/分类数组的字母数字排序,具有可自定义的数字格式。

3.6 k下载

更新2021年7月14日

查看许可证

编者按:这个文件被选为MATLAB中心推荐商品

要对任何文件名或文件夹名进行排序,请使用NATSORTFILES:
要对字符串/单元格数组的行进行排序,请使用NATSORTROWS:
# # # # # #
字符串/单元格/分类数组中的文本的字母数字排序。考虑到任意数字子字符串的值,对文本进行排序。例如:比较
X={“a2”,‘a10’,“a1”};
排序(X)
ans=“a1”“a10”“a2”
纳索特(X)
ans=“a1”“a2”“a10”
默认情况下,NATSORT将所有连续的数字解释为整数,可以使用正则表达式指定数字子串识别,允许数字子串具有:
  • 正负号
  • 小数点和小数点
  • E-符号指数
  • 十进制、八进制、十六进制或二进制记数法
  • Inf或NaN值
  • 正则表达式支持的标金宝app准:查找、限定符等。
当然,分拣本身也可以控制:
  • 升序/降序排序方向
  • 字符区分大小写/不区分大小写
  • 数字与字符的相对顺序
  • 数字与NaN的相对顺序
# # # # # #例子
多个整数(例如发布版本号):
>>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 = {“测试+NaN”,“test11.5”,“测试-1.4”,“测试”,“test-Inf”,“测试+0.3”};
>>分类(B)
ans=“测试”“测试+0.3”“测试+NaN”“测试-1.4”“测试Inf”“测试11.5”
>>纳索特(B,(- +) ? (NaN |正| \ d + \ ? \ d *)”)
ans=“测试”“test-Inf”“测试- 1.4”“测试+ 0.3”“test11.5”“测试+南”
%%整数或十进制数,可能带指数:
>>C={“0.56 e007”,'',“43E-2”,'10000',“9.8”};
>>分类(C)
ans=''“0.56 e007”'10000'“43E-2”“9.8”
>>纳索特(C,“\d+\。?\d*([eE][-+]?\d+?”)
ans=''“43E-2”“9.8”'10000'“0.56 e007”
%%十六进制数(前缀为“0X”):
>>D={“a0X7C4z”,“a0X5z”,“a0X18z”,“a0XFz”};
>>分类(D)
ans=“a0X18z”“a0X5z”“a0X7C4z”“a0XFz”
>>纳索特(D,“0 x [0-9A-F] +”,“%i”)
ans=“a0X5z”“a0XFz”“a0X18z”“a0X7C4z”
%%二进制数:
>>E={‘a11111000100z’,“a101z”,'A00000000001100Z',‘a1111z’};
>>排序(E)
ans='A00000000001100Z'“a101z”‘a11111000100z’‘a1111z’
>>纳索特(E,'[01]+',“%b”)
ans=“a101z”‘a1111z’'A00000000001100Z'‘a11111000100z’
%%区分大小写:
>>F={“a2”,“A20”,“A1”,‘a10’,“A2”,“a1”};
>>natsort(F,[],“无知案例”)%的默认
ans=“A1”“a1”“a2”“A2”‘a10’“A20”
>>natsort(F,[],“火柴盒”)
ans=“A1”“A2”“A20”“a1”“a2”‘a10’
%%排序顺序:
>> g = {'2',“a”,'','3',“B”,'1'};
>>纳索特(G,[],“提升”)%的默认
ans='''1''2''3'“a”“B”
>>纳索特(G,[],“下”)
ans=“B”“a”'3''2''1'''
>>纳索特(G,[],“num <字符”)%的默认
ans='''1''2''3'“a”“B”
>>纳索特(G,[],“char < num”)
ans=''“a”“B”'1''2''3'
%%UINT64数字(全精度):
>>纳索特({‘a18446744073709551615z’,“a18446744073709551614z”[]},“%lu”)
ans=“a18446744073709551614z”‘a18446744073709551615z’

引用为

斯蒂芬(2021)。可定制的自然顺序排序(//www.tatmou.com/matlabcentral/fileexchange/34464-customizable-natural-order-sort), MATLAB中央文件交换。检索.