2015-11-28 1 views
0

Прямо сейчас у меня есть два текстовых поля. Один - это вход, а другой - текстовая строка. Он отлично функционирует. Есть ли способ избавиться от поля ввода и иметь «искомое» слово в коде, поэтому, когда я нажимаю кнопку, он дает результат.поиск и подсчет записей слова в строке текстового поля

Private Function FindWords(ByVal TextSearched As String, ByVal Paragraph As String) As Integer 

    Dim location As Integer = 0 
    Dim occurances As Integer = 0 
    Do 
     location = TextSearched.IndexOf(Paragraph, location) 
     If location <> -1 Then 
      occurances += 1 
      location += Paragraph.Length 
     End If 
    Loop Until location = -1 
    Return occurances 
End Function 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Label1.Text = TextBox2.Text ' display result 
    Label2.Text = FindWords(TextBox1.Text, TextBox2.Text) 
    ' MsgBox("The word " & TextBox2.Text & " has occured " & FindWords(TextBox1.Text, TextBox2.Text) & " times!!") 
End Sub 
+1

Ум, вы имеете в виду, что хотите жестко ввести свой ввод? Что-то вроде 'Label2.Text = FindWords (" word ", TextBox2.Text)' возможно? – usr2564301

+0

Спасибо за ответ. Возможно, я не могу правильно это реализовать, чтобы заставить его работать? если я просто заменил строку label2, она, похоже, застряла в цикле или что-то в этом роде. – Kcjoey3

+0

Для этого было бы лучше использовать Regex. Вот простое решение: 'Regex.Matches (TextBox2.Text, Regex.Escape (TextBox1.Text)). Count' –

ответ

0

Есть несколько небольших проблем, которые вы могли бы видеть вас включить опцию строгого в настройках компиляции вашего проекта. Функция возвращает целое число. Для того, чтобы правильно назначить его на этикетку текстового поля, вы должны действительно добавить .ToString к концу задания, как этого

Label2.Text = FindWords(TextBox1.Text, TextBox2.Text).ToString 

Так оставив вам код, как вы написали, в этих подлодках, вы просто хотите передать строка в качестве параметра для поиска текста?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Label1.Text = TextBox2.Text ' display result 
    Label2.Text = FindWords(TextBox1.Text, TextBox2.Text) 
    ' MsgBox("The word " & TextBox2.Text & " has occured " & FindWords(TextBox1.Text, TextBox2.Text) & " times!!") 
End Sub 

Просто измените его на этой

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    dim searchString as string="Hello" 'or whatever string you want to use 
    Label1.Text = TextBox2.Text ' display result 
    Label2.Text = FindWords(searchString, TextBox2.Text) 
    ' MsgBox("The word " & TextBox2.Text & " has occured " & FindWords(TextBox1.Text, TextBox2.Text) & " times!!") 
End Sub 

, но это могло бы быть лучше, чтобы изменить его немного больше, так что ваша функция только получает выполняется один раз, если вы хотите, чтобы отобразить MessageBox с числом вхождений - вот так

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    dim searchCount as Integer 
    dim searchString as string="Hello" 'or whatever string you want to use 
    Label1.Text = TextBox2.Text ' display result 
    searchCount = FindWords(searchString, TextBox2.Text) 
    Label2.Text = searchcount.ToString 
    ' MsgBox("The word " & TextBox2.Text & " has occured " & searchcount.Tostring & " times!!") 
End Sub 
+0

Wow! Большое спасибо за информацию. Все работает отлично. – Kcjoey3

Смежные вопросы