#vb.net #visual-studio #vb.net-2010
#vb.net #visual-studio #vb.net-2010
Вопрос:
Я разрабатываю программу, в которой вы можете ввести предложение, а затем выполнить поиск по слову. Затем программа сообщит вам, в каких позициях встречается это слово. Я написал некоторый код, но не знаю, как продолжить.
Module Module1
Sub Main()
Dim Sentence As String
Dim SentenceLength As Integer
Dim L As Integer = 0
Dim LotsofText As String = Console.ReadLine
Console.WriteLine("Enter your word ") : Sentence = Console.ReadLine
For L = 1 To LotsofText.Length
If (Mid(LotsofText, L, 1)) = " " Then
End If
L = L 1
Dim TextCounter As Integer = 0
Dim MainWord As String = Sentence
Dim CountChar As String = " "
Do While InStr(MainWord, CountChar) > 0
MainWord = Mid(MainWord, 1 InStr(MainWord, CountChar), Len(MainWord))
TextCounter = TextCounter 1
'Text = TextCounter 2
' Console.WriteLine(Text)
Loop
Console.WriteLine(TextCounter)
Console.Write("Press Enter to Exit")
Console.ReadLine()
End Sub
End Module
Комментарии:
1. Mid, Instr и т. Д. Существуют Только для совместимости с VB6 и VBA. Они никогда не должны использоваться.
Ответ №1:
Преобразуйте этот фрагмент кода из C # в Visual Basic. match.Index
укажет позицию данного слова.
var rx = new Regex("your");
foreach (Match match in rx.Matches("This is your text! This is your text!"))
{
int i = match.Index;
}
Ответ №2:
Чтобы найти только слова, а не подстроки (например, игнорировать «cat» в «catty»):
Dim LotsofText = "catty cat"
Dim Sentence = "cat"
Dim pattern = "b" amp; Regex.Escape(Sentence) amp; "b"
Dim matches = Regex.Matches(LotsofText, pattern)
For Each m As Match In matches
Debug.Print(m.Index amp; "") ' 6
Next
Если вы хотите также найти вложенные строки, вы можете удалить "b"
части.
Ответ №3:
Если вы добавите эту функцию в свой код:
Public Function GetIndexes(ByVal SearchWithinThis As String, ByVal SearchForThis As String) As List(Of Integer)
Dim Result As New List(Of Integer)
Dim i As Integer = SearchWithinThis.IndexOf(SearchForThis)
While (i <> -1)
Result.Add(i)
i = SearchWithinThis.IndexOf(SearchForThis, i 1)
End While
Return Result
End Function
И вызовите функцию в своем коде:
Dim Indexes as list(of Integer) = GetIndexes(LotsofText, Sentence)
Теперь getIndexes найдет все индексы слова, которое вы ищете в предложении, и поместит их в индексы списка.