2017-02-09 8 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) 'は望む結果を与えるでしょう。 1番目の文字列paramは*検索する文字列*、2番目は検索する文字列*です。 [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を返します。

:比較演算子>が既にブール値を生成している場合は、CBoolがなぜなのですか?関数は、Nullという値を渡すことができるからです。比較される文字列のいずれかがNullである場合、InStr関数はNullを返し、テストNull > 0Nullと評価します。しかし、CBool(Null)は、前のOn Errorでキャプチャされたエラーを生成します(オブジェクトの問題も処理します)

+0

これは動作します。どうもありがとう! – user788448

関連する問題