2016-09-28 1 views
1

Я недавно начал с Visual Basic, поэтому я не очень хорошо знаком с ним. Я новичок в вычислениях, так что медведь со мной! Я пытаюсь создать программу формы, которая учитывает конкретное слово в предложении. Я не очень далека от этого, как вы можете видеть из моего кода. Все, что мне нужно сделать, это сказать мне, соответствуют ли два текстовых поля. Я был бы очень признателен, если бы кто-нибудь помог мне с решением! Большое спасибо.VB-программа, которая подсчитывает количество раз, когда определенное слово встречается в предложении

код:

Public Class Form1 
    Dim Counter As Integer = 0 

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

     If Word.Text = Sentence.Text Then 
      Counter1.Text = Counter + 1 
     End If 
    End Sub 

End Class 

ответ

0

VB.NET и C# используют ту же базовую модель объекта, так что вы можете адаптировать exising C# solution.

Вот как ваш суб будет выглядеть:

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

    If Word.Text.Length = 0 Then 
     counter = 0 
    Else 
     counter = (Sentence.Text.Length - Sentence.Text.Replace(Word.Text,"").Length)/Word.Text.Length 
    End If 
    Counter1.Text = counter 
End Sub 

Этот метод подсчитывает все вхождений на одном дыхании, без петли, так что вам не нужен инкрементора.

Как упоминалось в @ romulus001, длина Word.Text может быть равна нулю, поэтому перед делением на нее следует проверить. Если длина Word.Text равна нулю, то нужный вам счет, вероятно, равен нулю, так как вы буквально ничего не ищете.

+0

Что делать, если поле Word пуст? Вы не можете делить на 0 – romulus001

+0

Большое спасибо, очень признателен –

+0

Без проблем, рад, что мы сможем помочь. –

0

Я не знаю, если он должен быть чувствителен к регистру или нет, но вы можете использовать один из этих кодов:

1)

Counter = Sentence.Text.split(Word.Text).Length - 1 'if the search is case sensitive 

2)

Counter = Sentence.Text.toUpper.split(Word.Text.toUpper).Length - 1 'if the search is NOT case sensitive` 

затем :

Counter1.Text = Counter 
Смежные вопросы