第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

匹配字符串?dāng)?shù)組中的值

匹配字符串?dāng)?shù)組中的值

慕工程0101907 2019-11-18 18:32:24
問題:尋找一種更有效的方法來查找一維數(shù)組中是否存在完全匹配的值-本質(zhì)上是一個(gè)布爾值true/false。我是否忽略了明顯的東西?還是我可能應(yīng)該使用集合對(duì)象或字典時(shí),通過使用數(shù)組來簡(jiǎn)單地使用錯(cuò)誤的數(shù)據(jù)結(jié)構(gòu)?在后者中,我可以分別檢查.Containsor .Exists方法在Excel中,我可以檢查向量數(shù)組中的值,例如:If Not IsError(Application.Match(strSearch, varToSearch, False)) Then' Do stuffEnd If這將返回一個(gè)完全匹配的索引,顯然受到Match功能的限制,該功能只能在此上下文中找到第一個(gè)匹配值。這是一種常用的方法,也是我使用了很長(zhǎng)時(shí)間的方法。這對(duì)于Excel來說已經(jīng)足夠令人滿意-但是其他應(yīng)用程序呢?在其他應(yīng)用程序中,我可以做基本上相同的事情,但是需要啟用對(duì)Excel對(duì)象庫的引用,然后:   If Not IsError(Excel.Application.match(...))但是,這似乎很愚蠢,并且由于權(quán)限/信任中心/等原因,很難對(duì)分布式文件進(jìn)行管理。我試圖使用Filter()函數(shù): If Not Ubound(Filter(varToSearch, strSearch)) = -1 Then    'do stuff End If但是這種方法的問題是Filter返回部分匹配的數(shù)組,而不是精確匹配的數(shù)組。(我不知道為什么返回子字符串/部分匹配項(xiàng)會(huì)很有用。)另一個(gè)選擇是從字面上遍歷數(shù)組中的每個(gè)值(我認(rèn)為這也是非常常用的方法),這似乎比調(diào)用Excel Match函數(shù)還要麻煩。For each v in vArray   If v = strSearch Then    ' do stuff   End IfNext
查看完整描述

3 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果我們要談?wù)撔阅?,那么沒有替代品可以運(yùn)行一些測(cè)試。以我的經(jīng)驗(yàn),Application.Match()比調(diào)用使用循環(huán)的函數(shù)要慢十倍。


Sub Tester()


    Dim i As Long, b, t

    Dim arr(1 To 100) As String


    For i = 1 To 100

        arr(i) = "Value_" & i

    Next i


    t = Timer

    For i = 1 To 100000

        b = Contains(arr, "Value_50")

    Next i

    Debug.Print "Contains", Timer - t


    t = Timer

    For i = 1 To 100000

        b = Application.Match(arr, "Value_50", False)

    Next i

    Debug.Print "Match", Timer - t


End Sub



Function Contains(arr, v) As Boolean

Dim rv As Boolean, lb As Long, ub As Long, i As Long

    lb = LBound(arr)

    ub = UBound(arr)

    For i = lb To ub

        If arr(i) = v Then

            rv = True

            Exit For

        End If

    Next i

    Contains = rv

End Function

輸出:


Contains       0.8710938 

Match          4.210938 


查看完整回答
反對(duì) 回復(fù) 2019-11-18
  • 3 回答
  • 0 關(guān)注
  • 580 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)