网上文件读入多维数组【已解决】
本帖最后由 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 http://www.autoitx.com/images/common/back.gif
玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”… 玄机在LZ的标点符号上…
但,被最后一个"ads.bat,1234" 推翻,其它都是全角逗号“,”…
afan 发表于 2013-4-27 14:35 http://www.autoitx.com/images/common/back.gif
好吧,就全角吧,已修改 好吧,就全角吧,已修改
lxsky 发表于 2013-4-27 15:35 http://www.autoitx.com/images/common/back.gif
不要这么无奈哦,反正用全角半角都不好~ 应该使用文件名非法字符做分隔符,如“|”等 #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)) 收藏一下啊啊 本帖最后由 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)) 回复 8# lxsky
自然正则快 顶楼主顶楼主顶楼主顶楼主顶楼主
页:
[1]