尝试获取数组的最后一项时下标超出范围
Subscript out of range when trying to get last item of an Array
比如我有一个字符串A-456-BC-123;DEF-456;GHI-789
。我需要用关键字 456
搜索第二部分:DEF-456
。这里的潜在问题是第一部分 A-456-BC-123
也有关键字 456
。目前我的逻辑是,split
字符串首先使用 ;
,split
每个字符串再次使用 -
,得到这个 Array
的最后一项,搜索关键字 456
。还有就是我不想做DEF-456
这样的全关键字匹配,我只想用456
作为关键字来定位DEF-456
,换句话说,456
应该是我想要的字符串的最后一段。
这是我的代码:
FirstSplit= split("A-456-BC-123;DEF-456;GHI-789",";")
For each code in FirstSplit
SecondSplit = split(FirstSplit,"-")
'get Array Count
Count = Ubound(SecondSplit)
'get the last item in Array
If SecondSplit(Count-1) = "456" Then
'doing something
End if
Next
目前,在SecondSplit(Count-1)
会产生一个错误,说"Subscript out of range: '[number: -1]'"
有人可以告诉我如何解决吗?
真正的问题在这里:
SecondSplit = Split(FirstSplit, "-")
您应该从 For Each
循环中拆分存储在变量 code
中的元素。通过尝试拆分数组,您应该得到一个 Type Mismatch
错误,但也许 vbscript 足够宽容以尝试 return 一个 0 元素数组返回或其他东西。不管怎样:
SecondSplit = Split(Code, "-")
此外,要查看最后一个元素,只需使用:
If secondSplit(Ubound(SecondSplit)) = "456" Then
从 ubound
中减去 1 将得到倒数第二个元素。
您不需要将其拆分两次 - 您要查找的是 Right()
:
FirstSplit = split("A-456-BC-123;DEF-456;GHI-789",";")
For each code in FirstSplit
If Right(code, 3) = "456" Then
' do something
End If
Next
虽然这也匹配 ABC-1456
这样的条目。如果 -
符号是必需的分隔符,则必须说 If Right(code, 4) = "-456"
.
比如我有一个字符串A-456-BC-123;DEF-456;GHI-789
。我需要用关键字 456
搜索第二部分:DEF-456
。这里的潜在问题是第一部分 A-456-BC-123
也有关键字 456
。目前我的逻辑是,split
字符串首先使用 ;
,split
每个字符串再次使用 -
,得到这个 Array
的最后一项,搜索关键字 456
。还有就是我不想做DEF-456
这样的全关键字匹配,我只想用456
作为关键字来定位DEF-456
,换句话说,456
应该是我想要的字符串的最后一段。
这是我的代码:
FirstSplit= split("A-456-BC-123;DEF-456;GHI-789",";")
For each code in FirstSplit
SecondSplit = split(FirstSplit,"-")
'get Array Count
Count = Ubound(SecondSplit)
'get the last item in Array
If SecondSplit(Count-1) = "456" Then
'doing something
End if
Next
目前,在SecondSplit(Count-1)
会产生一个错误,说"Subscript out of range: '[number: -1]'"
有人可以告诉我如何解决吗?
真正的问题在这里:
SecondSplit = Split(FirstSplit, "-")
您应该从 For Each
循环中拆分存储在变量 code
中的元素。通过尝试拆分数组,您应该得到一个 Type Mismatch
错误,但也许 vbscript 足够宽容以尝试 return 一个 0 元素数组返回或其他东西。不管怎样:
SecondSplit = Split(Code, "-")
此外,要查看最后一个元素,只需使用:
If secondSplit(Ubound(SecondSplit)) = "456" Then
从 ubound
中减去 1 将得到倒数第二个元素。
您不需要将其拆分两次 - 您要查找的是 Right()
:
FirstSplit = split("A-456-BC-123;DEF-456;GHI-789",";")
For each code in FirstSplit
If Right(code, 3) = "456" Then
' do something
End If
Next
虽然这也匹配 ABC-1456
这样的条目。如果 -
符号是必需的分隔符,则必须说 If Right(code, 4) = "-456"
.