web-dev-qa-db-ja.com

文字列に別の文字列が含まれているかどうかを確認してください

文字列の中に "、"(コンマ)が含まれているかどうかを調べたいです。 char-by-charを読む以外に他の方法はありますか?

206
krishna

Instr 関数を使う

Dim pos As Integer

pos = InStr("find the comma, in the string", ",")

posに15を返します

見つからなかった場合は0を返します

Excelの数式でコンマを見つける必要がある場合は、=FIND(",";A1)関数を使用できます。

大文字と小文字を区別しないで文字列の位置を見つけるためにInstrを使用したい場合は、Instrの3番目のパラメータを使用し、それにconst vbTextCompareを指定します(または、ハードエラーの場合は単に1)。

Dim posOf_A As Integer

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)

14の値が表示されます。

start引数が指定されて比較する場合に必要です。私はリンク仕様に記載されているようにあなたは、この場合の開始位置を指定する必要があることに注意してください。

345
rene

特別な単語likeを使うこともできます。

Public Sub Search()
  If "My Big String with, in the middle" Like "*,*" Then
    Debug.Print ("Found ','")
  End If
End Sub
58
Makah

同じタイプのことをする InStrRev 関数もありますが、テキストの終わりから始めまで検索を始めます。

Per @ reneの答え...

Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")

...はまだposに15を返しますが、文字列が単語 "the"のように複数の検索文字列を持つ場合は、次のようになります。

Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")

... 6の代わりに20をposに返します。

21
LimaNightHawk

Reneの答えを踏まえて、部分文字列が存在する場合はTRUE、存在しない場合はFALSEを返す関数を作成することもできます。

Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
    Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function
14
Sinister Beard