kkkpep 发表于 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
额外人    奋斗史    3345563   234
粉嘟嘟    而提问    341    565   1884
……
按C列大小排序输出为2.txt
防守打法防守打法123    56   65848
完事如意发大水    234    456   243
粉嘟嘟    而提问    341    565   1884
额外人    奋斗史    3345563   234

按D列大小排序输出为3.txt
……
依次类推

happytc 发表于 2011-3-15 10:35:33

你是要按啥排序呢?整个数字大小,还是字符呢?

happytc 发表于 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
        Local $TempArray[$Count + 1]
        For $i = 2 To $Count
                $TempArray[$i] = $i
                $TempArray[$i] = 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)
                Else
                        FileWriteLine("F:\" & $Flag & ".txt", $LineList[$TempArray[$i]])
                EndIf
        Next
EndIf

kkkpep 发表于 2011-3-15 12:02:40

是的就是按指定列的数字大小排列
楼上能否帮忙注释下,本人较菜

3mile 发表于 2011-3-15 12:04:48

#include <array.au3>
$str="防守打法防守打法123    56   65848"&@CRLF& _
"完事如意发大水    234    456   243" &@CRLF& _
"额外人    奋斗史    3345563   234" &@CRLF& _
"粉嘟嘟    而提问    341    565   1884"
$array_line=StringSplit($str,@CR,2)
local $array
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)
页: [1]
查看完整版本: 求助 数据排序问题