找回密码
 加入
搜索
查看: 1632|回复: 4

[AU3基础] 求助 数据排序问题

  [复制链接]
发表于 2011-3-15 09:32:10 | 显示全部楼层 |阅读模式
本帖最后由 kkkpep 于 2011-3-15 09:41 编辑

有文本1.txt内容为:
A             B             C       D       E        ……
防守打法  防守打法  123    56     65848
完事如意  发大水    234    456   243
额外人    奋斗史    3345  563   234
粉嘟嘟    而提问    341    565   1884
……
按C列大小排序输出为2.txt
防守打法  防守打法  123    56     65848
完事如意  发大水    234    456   243
粉嘟嘟    而提问    341    565   1884
额外人    奋斗史    3345  563   234

按D列大小排序输出为3.txt
……
依次类推
发表于 2011-3-15 10:35:33 | 显示全部楼层
你是要按啥排序呢?整个数字大小,还是字符呢?
发表于 2011-3-15 10:46:49 | 显示全部楼层
本帖最后由 happytc 于 2011-3-15 10:51 编辑

估计一般是按数值大小吧!

#include <Array.au3>
#include <File.au3>

Local $LineList
_FileReadToArray("F:\1.txt", $LineList)
$Flag = InputBox("Column", "Input Sort Column")
$Flag = Asc(StringUpper($Flag)) - 65
If IsArray($LineList) Then
        Local $Count = $LineList[0]
        Local $TempArray[$Count + 1][2]
        For $i = 2 To $Count
                $TempArray[$i][0] = $i
                $TempArray[$i][1] = Number(StringRegExpReplace($LineList[$i], "((\S+\s+){" & $Flag & "})(\S+).*$", "\3"))
        Next
        _ArraySort($TempArray, 0, 0, 0, 1)
        
        For $i = 1 To $Count
                If $i = 1 Then 
                        FileWriteLine("F:\" & $Flag & ".txt", $LineList[1])
                Else
                        FileWriteLine("F:\" & $Flag & ".txt", $LineList[$TempArray[$i][0]])
                EndIf
        Next
EndIf
 楼主| 发表于 2011-3-15 12:02:40 | 显示全部楼层
是的就是按指定列的数字大小排列
楼上能否帮忙注释下,本人较菜
发表于 2011-3-15 12:04:48 | 显示全部楼层
#include <array.au3>
$str="防守打法  防守打法  123    56     65848"&@CRLF& _
"完事如意  发大水    234    456   243" &@CRLF& _
"额外人    奋斗史    3345  563   234" &@CRLF& _
"粉嘟嘟    而提问    341    565   1884"
$array_line=StringSplit($str,@CR,2)
local $array[UBound($array_line)][5]
for $i=0 to UBound($array_line)-1
        $array_cow=StringSplit(StringStripWS($array_line[$i],4),' ',2)
        for $n=0 to UBound($array_cow)-1
                if not StringIsDigit($array_cow[$n]) then 
                        $array[$i][$n]=$array_cow[$n]
                Else
                        $array[$i][$n]=Number($array_cow[$n])
                EndIf
        Next
Next
_ArraySort($array,0,0,0,2);第三列升序排列
_ArrayDisplay($array)

_ArraySort($array,0,0,0,3);第四列升序排列
_ArrayDisplay($array)

_ArraySort($array,0,0,0,4);第五列升序排列
_ArrayDisplay($array)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 23:44 , Processed in 0.078836 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表