我正在寻求帮助,根据某些过滤器/单词匹配将XML中的值解析推入arraylist.但是,此数组不应具有预定义的数组大小,因为XML输入在文件之间是动态的.意思是,XML file1可能有10个这样的输入,XML File2可能有15个输入.有人可以建议我如何在2岁以下做:
chr*_*sen 15
数组可以定义为
Dim MyArray() as string
Run Code Online (Sandbox Code Playgroud)
然后在运行时调整大小并重新调整大小
Redim MyArray(lb to ub)
Run Code Online (Sandbox Code Playgroud)
或者,保留数组中的任何现有数据
Redim Preserve MyArray(lb to ub)
Run Code Online (Sandbox Code Playgroud)
lb和ub是数组的边界,并且可以通过代码确定,例如
lb = 1
ub = <number of matched found in xml>
Run Code Online (Sandbox Code Playgroud)
逐步调整大小
redim MyArray (0 to 0)
For each line in xml
if Match then
MyArray(ubound(MyArray)) = Match
Redim Preserve MyArray(0 to ubound(MyArray) + 1)
end if
Next
' Array ends up 1 size larger than number of matches '
if ubound(MyArray) > 0 then
redim Preserve MyArray (0 to ubound(MyArray) - 1)
end if
Run Code Online (Sandbox Code Playgroud)
小智 6
虽然听起来很傻,但有时使用一个字符串可以看作是一个动态的排序数组,然后将它拆分.仅当结果数组中的对象是字符串或数字并且您可以确定char时,此方法才有效.您选择作为分隔符的序列不会出现在对象的任何字符串表示内,例如:
Temp = ""
Separator = ","
For A = 1 to 155
If Temp <> "" Then
Temp = Temp & Separator
End If
Temp = Temp & CStr(A)
Next 'A
myArray = Split(Temp, Separator)
'now myArray has the elements 1, 2, ..., 155 (which are strings!)
Run Code Online (Sandbox Code Playgroud)
这可能在某些特殊情况下有用,因为它是一种更直观的方式.请注意,您以这种方式创建的数组是一个字符串数组!