已解决文件内容按类别转为数组问题
本帖最后由 网店 于 2012-4-27 23:30 编辑现有文件里有几类内容 如:
在类 config1 里有
a
b
c
三条名称
在类 config2 里有
1
2
3
4
四条名称
问题:
此文件格式(待定)用INI 或者TXT,如何能按类转为数组形式
Dim $ config1[]
Dim $ config2[] ;;;;;;;;;;;;test.ini;;;;;;;;;;;;;;
a=
b=
c=
1=
2=
3=
4=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <Array.au3>
Local $fields = IniReadSectionNames(@ScriptDir & "\test.ini")
_ArrayDisplay($fields, "字段情况")
Dim $config1
Dim $config2
Local $i
Local $j
For $i = 1 To $fields
Local $keywords_values = IniReadSection(@ScriptDir & "\test.ini", $fields[$i])
_ArrayDisplay($keywords_values, $fields[$i] & "字段的关键字和值")
If $fields[$i] = "config1" Then
ReDim $config1[$keywords_values]
For $j = 0 To $keywords_values-1
$config1[$j] = $keywords_values[$j+1]
Next
EndIf
If $fields[$i] = "config2" Then
ReDim $config2[$keywords_values]
For $j = 0 To $keywords_values-1
$config2[$j] = $keywords_values[$j+1]
Next
EndIf
Next
_ArrayDisplay($config1, "数组$config1")
_ArrayDisplay($config2, "数组$config2")
没明白lz的意图 如果是txt文件则更简单:#Include <File.au3>
#include <Array.au3>
Local $config1,$config2
_FileReadToArray("config1.txt",$config1)
_FileReadToArray("config2.txt",$config2)
_ArrayDisplay($config1)
_ArrayDisplay($config2)
真心没看懂 4楼我理解有误,重新来过,假设对象文件为txt格式,类名前6个字符都为config。
;;;;;;;;;;;test.txt;;;;;;;;;;;;;;
config1
a
b
c
config2
1
2
3
4
config3
aa
bb
cc
dd
ee
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#include <Array.au3>
Local $n = 0, $m = 0
Local $Array
$File = FileOpen(@ScriptDir & "\test.txt", 0)
While 1
Local $line = FileReadLine($File)
If @error = -1 Then ExitLoop
If StringLeft($line, 6) == "config" Then
$n += 1
$m = 0
Else
$m += 1
$Array[$n][$m] = $line
EndIf
WEnd
_ArrayDisplay($Array)
FileClose($File)
生成二维数组吗?
#include <Array.au3>
Local $Str = _
'config1' & @CRLF & _
'a' & @CRLF & _
'b' & @CRLF & _
'c' & @CRLF & _
'config2' & @CRLF & _
'1' & @CRLF & _
'2' & @CRLF & _
'3' & @CRLF & _
'4' & @CRLF & _
'config3' & @CRLF & _
'aa' & @CRLF & _
'bb' & @CRLF & _
'cc' & @CRLF & _
'dd' & @CRLF & _
'ee'
MsgBox(0,'原始字符串',$str)
Local $Test = StringRegExp($str, '(?ms)(?<=config\d).*?(?=(?:config\d|\Z))', 3)
Local $Array,$K=1
For $i=0 to UBound($Test)-1
$tmp=StringRegExp($Test[$i],'[^\r\n]+',3)
If UBound($tmp)+1>$K Then
$K=UBound($tmp)+1
ReDim $Array[$K]
EndIf
$Array[$i]="CONFIG"&$I+1
For $n=1 to $K-1
$Array[$i][$n]=$tmp[$n-1]
Next
Next
_ArrayDisplay($Array) 本帖最后由 lixiaolong 于 2012-4-27 16:53 编辑
是不是这个意思??
a
b
c
1
2
3
4
#include <Array.au3>
Local $config1, $config2
Local $File = FileOpen(@ScriptDir & "\test.txt")
Local $Str = FileRead($File)
FileClose($File)
Local $Test = StringRegExp($Str, '(\w+)(?=\r|$)', 3)
For $i = 0 To UBound($Test) - 1
If $i < 3 Then
$config1[$i] = $Test[$i]
Else
$config2[$i - 3] = $Test[$i]
EndIf
Next
_ArrayDisplay($config1, '$config1')
_ArrayDisplay($config2, '$config2')
厉害。。。。。。。。
页:
[1]