2017-02-09 91 views
0

我有一个由经典ASP编写的应用程序。我需要比较string1是否包含string2,因此我使用instr函数。但是,即使string1包含string2,它总是返回0.我的代码的问题在哪里?VBScript Instr函数总是返回0

function Findstring(string1,string2) 
    dim findstr,loc 

    on error resume next 
    loc= instr(1,Lcase(string1),Lcase(string2),1) 
    if loc>0 then 
     findstr=true 

    else 
     findstr= false 

    end if 


    end function 
+0

我猜你已经搞乱了参数的顺序:'InStr(1,Lcase(string2),Lcase(string1) ,1)'会给出想要的结果。第一个字符串参数是要搜索的*字符串*,第二个是要搜索的*字符串*。请参阅[MSDN](https://msdn.microsoft.com/en-us/library/wybb344c(v = vs.84).aspx)... *说实话,我必须自己重新阅读文档我可以解释这一点。* – Filburt

+0

不知道这是一个复制/粘贴错误,但你的函数不返回任何东西。 –

+0

string1:要搜索的字符串。 string2:要搜索的字符串表达式。例如:string1是“我是学生”,string2是“am” – user788448

回答

1
Function FindString(string1, string2) 
    FindString = False 
    On Error Resume Next 
    FindString = CBool(InStr(1, LCase(string1), LCase(string2), 1) > 0) 
End Function 

如果string2在任何其他情况下,内部包含string1False这个函数将返回True

note:为什么CBool如果比较运算符>已经生成布尔值?因为我们可以调用传递Null值的函数。如果正在比较的任何字符串是Null,则InStr函数返回Null,并且测试Null > 0的计算结果为Null。但是CBool(Null)会产生一个错误,由前面的On Error(这也将处理对象的问题)捕获

+0

这是有效的。非常感谢! – user788448