我的问题最好是通过以下示例来理解,如果字符串与那些类别中定义的任何一个字符串匹配,则我的目标是将以下字符串分类。例如,

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

07-25 23:21