检查字符串是否包含另一个字符串

时间:2013-03-23 09:08:03

标签: string vba

我想查找字符串中是否包含","(逗号)。除了阅读char-by-char之外,我们还有其他选择吗?

5 个答案:

答案 0 :(得分:348)

使用Instr功能

Dim pos As Integer

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

将在pos中返回15

如果未找到,则返回0

如果您需要使用excel公式找到逗号,可以使用=FIND(",";A1)函数。

请注意,如果您想使用Instr来查找不区分大小写的字符串的位置,请使用Instr的第三个参数并为其指定const vbTextCompare(或者仅为1表示顽固分子)

Dim posOf_A As Integer

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

会给你14的值。

请注意,您必须在此情况下指定起始位置,如我链接的规范中所述:如果指定了compare,则需要start参数。

答案 1 :(得分:58)

您还可以使用特殊字like

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

答案 2 :(得分:21)

还有InStrRev函数执行相同类型的操作,但是从文本末尾开始搜索到开头。

Per @rene的答案......

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

...仍然会返回15到pos,但如果字符串有多个搜索字符串,就像单词“the”那样,那么:

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

...将返回20而不是6。

答案 3 :(得分:14)

根据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

答案 4 :(得分:1)

鉴于现有的 Instr/InstrRev 函数,您不会真的想这样做,但有时在 VBA 中使用 EVALUATE 返回 Excel 工作表函数的结果会很方便

# settings.py


 MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')