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


232

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


14
INSTR对你有用吗?
Stephen Quan

Answers:


385

使用Instr函数

Dim pos As Integer

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

将返回POS 15

如果找不到,将返回0

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

请注意,如果要用于Instr查找不区分大小写的字符串的位置,请使用Instr的第三个参数,并为其提供const vbTextCompare(对于die-hards,则仅为1)。

Dim posOf_A As Integer

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

将为您提供14的值。

请注意,在这种情况下,您必须按照我链接的规范中的说明指定开始位置:如果指定了compare,则必须使用start参数。


4
但是,如果找到的字符串位于位置0怎么办?您如何区分“在索引0上找到”和“未找到(0)”?
gEdringer '16

10
@gEdringer。当要找到的字符串在开头时,它返回
1。– rene


23

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

根据@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")

...将20返还给pos,而不是6。


17

基于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

3
我们期望此函数出现哪种数据库错误?错误陷阱和错误消息似乎完全没有意义。
Roobie Nuby 2014年

11
@RoobieNuby这只是我的默认错误处理。我将其置于所有功能上,因为如果出现问题,我希望工作人员打电话给我,而不是自己尝试修复。
阴险的胡子,2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.