文字列の左または右から、指定された出現箇所を検索します。
FoundPos := InStr(Haystack, Needle , CaseSense, StartingPos, Occurrence)
型:文字列
内容を検索する文字列。
型:文字列
検索する文字列です。
省略したときは、Offが初期値になります。そうでないときは、次のいずれかの値を指定します:
On または 1 (true):検索では大文字と小文字が区別されます。
Off または 0 (false):検索では大文字と小文字が区別されないため、A-Z の文字は小文字の文字と同一と見なされます。
Locale:検索では、現在のユーザーのロケールの規則に従って大文字と小文字は区別されません。例えば、英語や西欧のロケールでは、A~Zの小文字だけでなく、ÄやÜなどの非ASCII文字も小文字と同じように扱われることがほとんどです。Localeは、比較する文字列の性質によって、Offの1~8倍遅くなります。
型:整数
省略したときは、文字列全体が検索対象になります。そうでないときは、検索を開始する位置を指定します。1が最初の文字、2が2番目の文字のように指定します。負の値はHaystackの最後から数えるので、-1が最後の文字、-2が2番目の文字のように指定します。。
Occurrenceを省略したときは、StartingPosが負であれば、右から左へ検索します。ただし、Occurrenceを指定したときは、StartingPosは検索の方向には影響しません。
右から左への検索では、StartingPosはNeedleの最初の出現候補の最後の文字の位置を指定します。例えば、InStr("abc", "bc",, 2, +1)
はマッチしますが、InStr("abc", "bc",, 2, -1)
はそうではありません。
StartingPosの絶対値がHaystackの長さより大きいときは、0 が返されます。
型:整数
省略したときは、Haystackでの最初のマッチが初期値となります。StartingPos が負の場合は右から左へ、そうでないときはは左から右へ検索されます。
Occurrenceが正の場合、検索は常に左から右へ行われる。Occurrenceに2を指定すると、2番目にマッチした位置を、3を指定すると3番目にマッチした位置を返します。
Occurrenceが負の場合、検索は常に右から左へ行われます。例えば、-2は右から2番目に出現するものを検索します。
型:整数
この関数は、文字列Haystackの中で文字列Needleが出現する位置を返します。これは、0が「偽」と同義であり、直感的に「見つからない」ことを示すからである。
StartingPosやOccurrenceの値に関係なく、戻り値は常にHaystackの最初の文字に対する相対値です。例えば、「123abc789」の「abc」の位置は、常に4です。
通常、空文字列(""
)は、どの位置にも出現します。しかし、空白のNeedleは通常間違って渡されるだけなので、エラーとして扱われ、例外がスローされます。
以下のいずれかに該当する場合、ValueErrorが発生します:
RegExMatchは、文字列の中にあるパターン(正規表現)を検索することができるので、InStrよりはるかに柔軟性があります。しかし、単純な部分文字列を検索する場合は、一般にInStrの方がRegExMatchより高速です。
InStrは最初のバイナリゼロ(ヌルターミネーター)までしか検索しませんが、RegExMatchはバイナリゼロが含まれていても、文字列の全長を検索しています。
Haystack := "The Quick Brown Fox Jumps Over the Lazy Dog" Needle := "Fox" If InStr(Haystack, Needle) MsgBox "文字列が見つかりました。" Else MsgBox "文字列が見つかりません。"