Мне нужна помощь, чтобы выяснить, как справиться с этой проблемой. Код, который я пытаюсь сделать, принимает две введенные пользователем строки, открывает/ищет файл txt и подсчитывает, сколько раз упоминаются эти две строки.Проблема с подсчетом нескольких слов в строке
С кодом, который у меня есть до сих пор, он не учитывает несколько строк в одной строке. Напр. если я ищу «Боб», а в одной строке есть два экземпляра Боба, он будет считать только один экземпляр. Это очень озадачивает, и любая помощь будет оценена по достоинству. Благодарю.
Dim inFile As IO.StreamReader
Dim String1 As String
Dim Count1 As Integer
Dim Count2 As Integer
Dim Text1 As String = TextBox1.Text.ToUpper
Dim Text2 As String = TextBox2.Text.ToUpper
String1.Text = ""
String2.Text = ""
If IO.File.Exists("C:\names.txt") Then
inFile = IO.File.OpenText("C:\names.txt")
While Not inFile.EndOfStream
String1 = inFile.ReadLine()
If String1.ToUpper.Contains(Text1) Then
Count1 += 1
If String1.ToUpper.Contains(Text2) Then
Count2 += 1
End If
End If
End While
inFile.Close()
Else
MessageBox.Show("xx",
"xx",
MessageBoxButtons.OK)
End If
String1.Text = Count1.ToString
String2.Text = Count2.ToString
End Sub
Одна из проблем заключается в том, что Содержит слева направо от начала строки, повторяя тот же ИФ, который не поймает второе появление (если существует). Я предлагаю вам использовать другую функцию, такую как IndexOf: http://msdn.microsoft.com/en-us/library/2y7ddk24.aspx – NoChance
Я попытался использовать IndexOf, но полученный результат оказался намного большим, чем реальное число. Измененный код выглядит так: «Если String1.ToUpper.IndexOf (Text1) then». Я также пытался использовать подстроки, но это также выдает ошибки. Возможно, я сделал это неправильно, хотя ... – Envygood