排列数组 为什么99会大于100[已解决]
本帖最后由 dingcool 于 2017-4-22 22:58 编辑#include <Array.au3>
_arraysort($fscjall,1)
结果会这样 真头痛~~~~~~~ 回复 2# dingcool
文字排列法 99 大於 100 回复 3# kk_lee69
如何改成数字排列呢~~~~~~~ 自己想了个临时解决方法,效率慢,凑合用吧Func arraysort($fscjall)
If _ArrayMax($fscjall) < 90 Then
_ArraySort($fscjall)
Return $fscjall
EndIf
For $i = 0 To UBound($fscjall) - 1
For $j = 0 To UBound($fscjall) - 1 - 1 - $i
$a = StringSplit($fscjall[$j], ".")
$b = StringSplit($fscjall[$j + 1], ".")
If StringLen($a) < StringLen($b) Then
;ConsoleWrite($fscjall[$j] & ">" & $fscjall[$j + 1] & @CRLF)
$temp0 = $fscjall[$j];
$temp1 = $fscjall[$j];
$fscjall[$j] = $fscjall[$j + 1]
$fscjall[$j] = $fscjall[$j + 1]
$fscjall[$j + 1] = $temp0
$fscjall[$j + 1] = $temp1
ContinueLoop
EndIf
If StringLen($a) < StringLen($b) Then
ContinueLoop
EndIf
If StringLen($a) == StringLen($b) Then
If $fscjall[$j] < $fscjall[$j + 1] Then
; ConsoleWrite($fscjall[$j] & "= >" & $fscjall[$j + 1] & @CRLF)
$temp0 = $fscjall[$j];
$temp1 = $fscjall[$j];
$fscjall[$j] = $fscjall[$j + 1]
$fscjall[$j] = $fscjall[$j + 1]
$fscjall[$j + 1] = $temp0
$fscjall[$j + 1] = $temp1
Else
ContinueLoop
EndIf
EndIf
Next
Next
Return $fscjall
EndFunc ;==>arraysort 本帖最后由 kk_lee69 于 2017-4-22 22:21 编辑
回复 5# dingcool
有 善用 搜索嗎??
http://www.autoitx.com/forum.php?mod=viewthread&tid=25156&highlight=%5C_arraysort
http://www.autoitx.com/forum.php?mod=viewthread&tid=34469&highlight=arraysort 回复 5# dingcool
某 前輩的一段話~~~
先将文件名中的数字统一在其左边补0到一指定的最大位数,(比如5位:1-10.txt 补0后 00001-00010.txt)
再用 _ArraySort() 排序 Func _LeftArraysort($fscjall)
If _ArrayMax($fscjall) > 90 Then
For $j = 0 To UBound($fscjall) - 1
$a = StringSplit($fscjall[$j], ".")
If StringLen($a) == 2 And StringLen($a) < 3 Then $fscjall[$j] = "0" & $fscjall[$j]
Next
EndIf
可以是可以了 总是感觉前面多个0难看,看来排完序还要去判断第一个是否为0 删除掉
_ArraySort($fscjall, 1)
Return $fscjall
EndFunc 另外将数据强制转换成数字再排序autoit有这方面的函数吗
double() float() 你的 數組 資料怎麼來的?? 回复 9# dingcool
剛剛給你的範例裡面蛋大
不是說了試一下 以下的範例
#include <Array.au3>
Local $test =
_arraysort($test,0)
_ArrayDisplay($test)
所以結論應該是你的 數組 來源是甚麼
如果從來源下手.....進入數組的時候 是 數字 不就解決問題了嗎?? 你的数组里的数值是文本吧(字符串) 回复 11# kk_lee69
感谢,主要这些数据是服务器返回的 都是文本 对本文进行整理 获得的数字再比较
其本质还是字符串所以比大小出现上述问题 我的数据量不大
1 判读字符串长度
2或者刚才说的左侧填充0
都可以解决,感谢 ! 回复 13# dingcool
試試看將數組
FOR NEXT
然後用 Number 轉換一次 重新回填
或者 將 數組內容直接 +0 後 回填
在做排序動作 学习了。排序原来有这么多注意点
页:
[1]