Я хочу найти, если строка содержит в себе "," (запятую). Есть ли у нас другой вариант, кроме чтения char -by- char?
Проверьте, содержит ли строка другую строку
Ответ 1
Используйте функцию Instr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
вернет 15 в pos
Если он не найден, он вернет 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.
Обратите внимание, что вы должны указать начальную позицию в этом случае, как указано в спецификации, которую я связал: Аргумент start необходим, если указано сравнение.
Ответ 2
Вы также можете использовать специальное слово like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
Ответ 3
Существует также функция InStrRev, которая делает то же самое, но начинает поиск с конца текста до начала.
В ответ на @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 в pos вместо 6.
Ответ 4
На основе ответа Рене вы также можете написать функцию, которая вернула 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