我的问题最好是通过以下示例来理解,如果字符串与那些类别中定义的任何一个字符串匹配,则我的目标是将以下字符串分类。例如,
dim test_str as string
test_str = "tomato"
如果测试字符串
tomato
与关键字(1)potato
,(2)tomato
和(3)spaghetti
中的任何一个匹配,则西红柿将被分类为食物。我现在有一种非常低效的方式来执行此操作,其中涉及使用多个
strcomp
,即if(strcomp(test_str, "potato", vbtextcompare) = 0 or _
strcomp(test_str, "tomato", vbtextcompare) =0 or _
strcomp(test_str, "spaghetti", vbtextcompare)=0 ) then
'label test str as "food"
但是,如果我在“食品”中定义了10个关键字,那么我将需要10个
strcomp
语句,这很乏味。有一个更好的方法吗 ? 最佳答案
我只是将所有组合存储在字符串中,并检查值是否存在InStr
:
Const food = "|potato|tomato|spaghetti|"
Dim test_str As String
test_str = "tomato"
If InStr(1, food, "|" & test_str & "|", vbTextCompare) Then
Debug.Print "food"
Else
Debug.Print "not food"
End If