lxsky 发表于 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。如下:
$array=1
$array=aaa.txt
$array=werrt
$array=2
$array=bbb.txt
$array=12234
……

haijie1223 发表于 2013-4-27 13:40:33

我语文不及格~楼下继续吧~

afan 发表于 2013-4-27 14:35:17

我语文不及格~楼下继续吧~
haijie1223 发表于 2013-4-27 13:40 http://www.autoitx.com/images/common/back.gif


    玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”…

lxsky 发表于 2013-4-27 15:35:28

玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”…
afan 发表于 2013-4-27 14:35 http://www.autoitx.com/images/common/back.gif


    好吧,就全角吧,已修改

afan 发表于 2013-4-27 15:42:22

好吧,就全角吧,已修改
lxsky 发表于 2013-4-27 15:35 http://www.autoitx.com/images/common/back.gif


    不要这么无奈哦,反正用全角半角都不好~ 应该使用文件名非法字符做分隔符,如“|”等

afan 发表于 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, $x
For $i = 0 To UBound($atmp) - 1 Step 3
        $aData[$x] = $atmp[$i]
        $aData[$x] = $atmp[$i + 1]
        $aData[$x] = $atmp[$i + 2]
        $x += 1
Next
_ArrayDisplay($aData, UBound($aData))

49666684 发表于 2013-4-27 20:06:30

收藏一下啊啊

lxsky 发表于 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
Local $Array[$Count + 1]
For $i = 1 To $Count
        $Temp = StringSplit($Split[$i], "|")
        ;MsgBox(0,0,$Temp&'//'&$Temp)
        $Array[$i] = $Temp
        $Array[$i] = $Temp
        $Array[$i] = $Temp
Next
EndIf
_ArrayDisplay($Array, UBound($Array))

netegg 发表于 2013-5-2 10:58:39

回复 8# lxsky
自然正则快

小小盘 发表于 2013-5-4 13:21:14

顶楼主顶楼主顶楼主顶楼主顶楼主
页: [1]
查看完整版本: 网上文件读入多维数组【已解决】