Определить позицию появления одной строки внутри другой, с учётом символов подстановки (не используя цикл) — Visual Basic(Бейсик)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Для того, чтобы определить позицию появления одной строки внутри другой можно применить Basic функцию InStr, однако, если при поиске необходимо использовать символы подстановки ? и *, то в таком случае Вы можете воспользоваться стандартной функцией рабочего листа ПОИСК/Search
 
iText$ = "Текст, в котором нам необходимо найти барона Врангеля [1878-1928]"
  
iResult = Application.Search("Вр?нгел", iText$)
  
If Not IsError(iResult) Then
   MsgBox "Текст начинается с позиции# " & iResult, , ""
Else
   MsgBox "Искомый текст не найден", , ""
End If
 
iText$ = "Текст, в котором нам необходимо найти капитана Врунгеля"
  
iResult = Application.Search("Вр?нгел", iText$)
  
If IsNumeric(iResult) = True Then
   MsgBox "Текст начинается с позиции# " & iResult, , ""
Else
   MsgBox "Искомый текст не найден", , ""
End If
 
iText$ = "Текст, где вроде бы есть барон Мюнхгаузен"
  
If iText$ Like "*Мюнх*аузен*" Then
   MsgBox "Текст начинается с позиции# " & _
   WorksheetFunction.Search("Мюнх*аузен", iText$), , ""
Else
   MsgBox "Искомый текст не найден", , ""
End If
Примечание:
 
Максимально допустимое количество символов в строке не должно превышать 32767
По умолчанию поиск начинается с первого символа, однако, это легко исправить, если использовать третий(необязательный) аргумент функции, например, Application.Search("Текст", "Внутр_текста", 5)
Если нет необходимости в определении позиции вхождения, то для определения наличия искомой строки, достаточно всего лишь использовать оператор Like

Leave a Comment