来个另类的
支持 数字 符号 数字 的方式
比如21-09,43*4
#include <Array.au3>
Local $array[15] = ["1-1", "1-11", "1-2", "1-3", "1-9", "2-1", "2-2", "3-1", "3-2", "3-3",'100-99','0002*847', "1-1154", "1-312", "2-1234567"]
$a=_arraysort_s($array)
_ArrayDisplay($a)
Func _arraysort_s($arr)
Local $max
For $i=0 To UBound($arr)-1
If StringLen($arr[$i])>$max Then $max=StringLen($arr[$i])
Next
For $i=0 To UBound($arr)-1
$before='%0'&$max&'d-%0'&$max&'d'
If $arr[$i]='' Then ContinueLoop
$arr[$i]=StringFormat($before,StringRegExpReplace($arr[$i],'[^\d]\d+',''),StringRegExpReplace($arr[$i],'\d+[^\d]',''))
Next
_ArraySort($arr)
For $i=0 To UBound($arr)-1
$before='%01d-%01d'
If $arr[$i]='' Then ContinueLoop
$arr[$i]=StringFormat($before,StringRegExpReplace($arr[$i],'[^\d]\d+',''),StringRegExpReplace($arr[$i],'\d+[^\d]',''))
Next
Return($arr)
EndFunc
|