检查一个string是否包含其他string
我想查找一个string是否包含“,”(逗号)。 除了读char-by-char之外,还有别的select吗?
使用Instrfunction
Dim pos As Integer pos = InStr("find the comma, in the string", ",")
将返回15在pos
如果没有find它将返回0
如果您需要使用Excel公式查找逗号,则可以使用=FIND(",";A1)
函数。
注意,如果你想使用Instr
来查找string不区分大小写的位置,可以使用Instr
的第三个参数,并给它一个const vbTextCompare
(或者对于顽固派来说只是1)。
Dim posOf_A As Integer posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
会给你14的价值。
请注意,在这种情况下,必须指定起始位置,如规范I所链接的: 如果指定了比较,则需要起始参数。
您也可以使用如下特殊字词:
Public Sub Search() If "My Big String with, in the middle" Like "*,*" Then Debug.Print ("Found ','") End If End Sub
还有InStrRev函数可以完成相同types的事情,但是从文本的末尾开始search到开头。
Per @ rene的回答是…
Dim pos As Integer pos = InStrRev("find the comma, in the string", ",")
…仍然会返回15到pos,但如果string有多个searchstring,如单词“the”,那么:
Dim pos As Integer pos = InStrRev("find the comma, in the string", "the")
…将返回20,而不是6。
根据Rene的回答,你也可以写一个函数,如果子string存在则返回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