VB.NET. FAQ Вопрос 14. Как найти все подстроки в строке?
Для нахождения всех определенных подстрок в некой строке надо вызвать в цикле метод IndexOf. Этот метод возвращает позицию первого вхождения указанной подстроки. Для нахождения дальнейших подстрок надо вызывать этот же метод, указав в нем, что поиск надо делать не с начала, а с найденной позиции.
Вот пример:
' Строка, в которой ищем.</em>
Dim s As String = "qqaa qqsss"
' Строка, которую ищем.
Dim find As String = "qq"
' Номер позиции найденного элемента.
Dim pos As Int32 = 0
Do
' Получаем позицию очередного элемента.
pos = s.IndexOf(find, pos)
' Если что-то найдено...
If pos <> -1 Then
' то показываем позицию найденного элемента.
MessageBox.Show("Подстрока найдена на " + pos.ToString() + _
" позиции")
' Увеличиваем позицию поиска на длину строки для поиска.
pos += find.Length
End If
Loop Until pos = -1
Указанный фрагмент выведет 0 и 5 - именно на этих позициях находится подстрока "qq" в строке "qqaa qqsss".
|