亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在數組中搜索字符串

如何在數組中搜索字符串

PIPIONE 2019-10-30 10:08:04
在VBA中的數組中是否有容易(單線)搜索的字符串?還是我需要遍歷每個元素并將其與目標字符串進行比較?編輯:這是一維數組。我只需要知道如果一個字符串是某處在數組中。IE瀏覽器:names(JOHN, BOB, JAMES, PHLLIP)我如何確定數組中是否包含“ JOHN”,它必須最小,因為它將重復大約5000次,并且我不希望該函數減慢整個過程的速度。
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

如果您想知道是否在數組中找到該字符串,請嘗試以下函數:


Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean

  IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)

End Function

正如肖恩·柴郡指出的那樣,這必須是一維數組。


例:


Sub Test()

  Dim arr As Variant

  arr = Split("abc,def,ghi,jkl", ",")

  Debug.Print IsInArray("ghi", arr)

End Sub

(以下代碼根據HansUp的評論進行了更新)


如果要在數組中匹配元素的索引,請嘗試以下操作:


Function IsInArray(stringToBeFound As String, arr As Variant) As Long

  Dim i As Long

  ' default return value if value not found in array

  IsInArray = -1


  For i = LBound(arr) To UBound(arr)

    If StrComp(stringToBeFound, arr(i), vbTextCompare) = 0 Then

      IsInArray = i

      Exit For

    End If

  Next i

End Function

這也假設一維數組。請記住,LBound和UBound從零開始,因此索引為2表示第三個元素,而不是第二個。


例:


Sub Test()

  Dim arr As Variant

  arr = Split("abc,def,ghi,jkl", ",")

  Debug.Print (IsInArray("ghi", arr) > -1)

End Sub

如果您有特定的示例,請使用它來更新您的問題,否則示例代碼可能不適用于您的情況。


查看完整回答
反對 回復 2019-10-30
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

另一種選擇是使用字典而不是數組:


Dim oNames As Object

Set oNames = CreateObject("Scripting.Dictionary")

'You could if need be create this automatically from an existing Array

'The 1 is just a dummy value, we just want the names as keys

oNames.Add "JOHN", 1

oNames.Add "BOB", 1

oNames.Add "JAMES", 1

oNames.Add "PHILIP", 1

這樣一來,您就可以


oNames.Exists("JOHN")

字典提供的優勢是與的部分匹配相比,精確匹配Filter。假設您有一個數組中的原始名稱列表,但正在查找“ JO”或“ PHIL”,除了我們最初使用的四個人以外,他們實際上是兩個新人。在這種情況下,Filter(oNAMES, "JO")將匹配可能不需要的“ JOHN” 。有了字典,它就不會。


查看完整回答
反對 回復 2019-10-30
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

更簡單的功能在Apple OS上也可以使用:


Function isInArray(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean

Dim element

For Each element In arr

    If element = stringToBeFound Then

        isInArray = True

        Exit Function

    End If

Next element

End Function


查看完整回答
反對 回復 2019-10-30
  • 3 回答
  • 0 關注
  • 981 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號