求助 数据排序问题
本帖最后由 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: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 是的就是按指定列的数字大小排列
楼上能否帮忙注释下,本人较菜 #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]