learn321
发表于 2012-8-26 23:46:31
向大家学习,呵呵
fastidium
发表于 2012-8-27 09:45:28
我来学习大佬们的算法!
3mile
发表于 2012-8-27 11:52:09
以下代码效率很差,纠结中...
#include <array.au3>
Dim $array = ['czr1.5', _
'czr1.6abc', _
'opear1000ab', _
'cxd5.9', _
'opear5.6', _
'64.1auto123', _
'4cxd0.25df5', _
'cadll8.613', _
'czr48as26', _
'opear5855as85', _
'45cxd0.25f', _
'auto984', _
'opear354df', _
'czr48', _
'opear5855', _
'45cxd0.25', _
'auto984', _
'opear354', _
'541auto1.3', _
'cadll861', _
'auto984dfa']
$timer = TimerInit()
$out=string_number($array)
_ArrayDisplay($out,TimerDiff($timer))
Func string_number($array)
Local $num=1
For $i=0 To UBound($array)-1;取列
$tmp=StringRegExp($array[$i],'\d+|[^\d]+',3)
If UBound($tmp)>$num Then $num=UBound($tmp)
Next
Local $new_array[$num+2]
Local $new_len[$num+1]
For $i=1 To $num;定义第列长度
$new_len[$i]=1
Next
For $i=0 To UBound($array)-1;取每列字符串长度
$temp=StringRegExp($array[$i],'\d+|[^\d]+',3)
$new_array[$i]=$array[$i]
For $n=1 To UBound($temp)
$new_array[$i][$n]=$temp[$n-1]
$nl=StringRegExp($temp[$n-1],'\d+',3)
If @error Then
If StringLen($temp[$n-1])>$new_len[$n] Then $new_len[$n]=StringLen($temp[$n-1])
Else
If StringLen($nl)>$new_len[$n] Then $new_len[$n]=StringLen($nl)
EndIf
Next
Next
For $i=0 To UBound($new_array)-1;将每列格式化
For $n=1 To UBound($new_array,2)-2
$format='%0'&$new_len[$n]&'s'
If $new_array[$i][$n]='' Then
$new_array[$i][$n]=StringFormat($format,0)
ElseIf StringRegExp($new_array[$i][$n],'\d+',0) Then
$new_array[$i][$n]=StringFormat($format,$new_array[$i][$n])
EndIf
Next
Next
For $i=0 To UBound($new_array)-1;将格式化后文本写入
Local $string=''
For $n=1 To UBound($new_array,2)-2
$string&=$new_array[$i][$n]
Next
$new_array[$i]=$string
Next
_ArraySort($new_array,0,0,0,UBound($new_array,2)-1)
Local $output
For $i=0 To UBound($new_array)-1
$output[$i]=$new_array[$i]
Next
Return $output
EndFunc
Qokelate
发表于 2012-8-27 12:06:15
本帖最后由 Qokelate 于 2012-8-27 12:09 编辑
投机取巧的办法 , 不知是否符合要求
**** Hidden Message *****
tryhi
发表于 2012-8-27 15:21:29
回复 36# Qokelate
可惜完全不符合题意
黑色袜子
发表于 2012-8-27 17:43:35
海公公,打赏几个碎银呗。小的好久没喝过酒了。
zhao_ming
发表于 2020-2-22 21:54:00
看看,学习一下
破帽遮颜
发表于 2020-4-20 17:38:49
楼主辛苦了,谢谢楼主,感谢楼主分享,楼主好人一生平安!!!