找回密码
 加入
搜索
查看: 3342|回复: 9

[AU3基础] 网上文件读入多维数组【已解决】

  [复制链接]
发表于 2013-4-27 11:40:31 | 显示全部楼层 |阅读模式
本帖最后由 lxsky 于 2013-5-2 10:23 编辑

求高手指点
我有一个网络文件
1.txt:
1|aaa.txt|werrt
2|bbb.exe|12234
3|wer/ad.cmd|1sdf
4|wer/ads.bat|1234

现在我使用WinHTTP将文件读入了一个变量$data
也就是
$data=1|aaa.txt|werrt
2|bbb.exe|12234
3|wer/ad.cmd|1sdf
4|wer/ads.bat|1234

怎样在不生成临时文件的前提下直接 将这个$data转换成多维的数组$array[3,3]。如下:
$array[0,1]=1
$array[0,2]=aaa.txt
$array[0,3]=werrt
$array[1,1]=2
$array[1,2]=bbb.txt
$array[1,3]=12234
……
发表于 2013-4-27 13:40:33 | 显示全部楼层
我语文不及格~楼下继续吧~
发表于 2013-4-27 14:35:17 | 显示全部楼层
我语文不及格~楼下继续吧~
haijie1223 发表于 2013-4-27 13:40



    玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”…
 楼主| 发表于 2013-4-27 15:35:28 | 显示全部楼层
玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”…
afan 发表于 2013-4-27 14:35



    好吧,就全角吧,已修改
发表于 2013-4-27 15:42:22 | 显示全部楼层
好吧,就全角吧,已修改
lxsky 发表于 2013-4-27 15:35



    不要这么无奈哦,反正用全角半角都不好~ 应该使用文件名非法字符做分隔符,如“|”等
发表于 2013-4-27 19:43:39 | 显示全部楼层
#include <Array.au3>
Local $sData = _
                '1|aaa.txt|werrt' & @CRLF & _
                '2|bbb.exe|12234' & @CRLF & _
                '3|wer/ad.cmd|1sdf' & @CRLF & _
                '4|wer/ads.bat|1234'
Local $atmp = StringRegExp($sData, '(?m)^(\d+).([^|]+).([^|]+)\s*$', 3)
If @Error Then Exit
Local $aData[UBound($atmp) / 3][3], $x
For $i = 0 To UBound($atmp) - 1 Step 3
        $aData[$x][0] = $atmp[$i]
        $aData[$x][1] = $atmp[$i + 1]
        $aData[$x][2] = $atmp[$i + 2]
        $x += 1
Next
_ArrayDisplay($aData, UBound($aData))
发表于 2013-4-27 20:06:30 | 显示全部楼层
收藏一下啊啊
 楼主| 发表于 2013-5-2 10:21:49 | 显示全部楼层
本帖最后由 lxsky 于 2013-5-2 10:35 编辑

回复 6# afan


    帅,我已经搞定了 用了2次StringSplit,不知道 哪个效率高点
#include <Array.au3>
Local $Data = _
                '1|aaa.txt|werrt' & @CRLF & _
                '2|bbb.exe|12234' & @CRLF & _
                '3|wer/ad.cmd|1sdf' & @CRLF & _
                '4|wer/ads.bat|1234'
Local $Split = StringSplit($Data,@CR,0)
If IsArray($Split) Then
Local $Count
$Count = $Split[0]
Local $Array[$Count + 1][3]
For $i = 1 To $Count
        $Temp = StringSplit($Split[$i], "|")
        ;MsgBox(0,0,$Temp[1]&'//'&$Temp[2])
        $Array[$i][0] = $Temp[1]
        $Array[$i][1] = $Temp[2]
        $Array[$i][2] = $Temp[3]
Next
EndIf
_ArrayDisplay($Array, UBound($Array))
发表于 2013-5-2 10:58:39 | 显示全部楼层
回复 8# lxsky
自然正则快
发表于 2013-5-4 13:21:14 | 显示全部楼层
顶楼主顶楼主顶楼主顶楼主顶楼主
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 21:43 , Processed in 0.074564 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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