Подсчитать количество символов после определенного символа в текстовом поле

#vb.net #winforms #validation

#vb.net #winforms #проверка

Вопрос:

использование winforms / vb.net

Я пытаюсь подсчитать, сколько символов существует в «textbox3» после определенного символа «.» в текстовом поле.

примеры:

2adf = 0 («.» не существует)

2adf. = 0

2adf.2 = 1

2adf.2a = 2

2adf.2af = 3

2adf.2afe = 4

У меня уже есть функция для поиска, если есть «.»

 if (CountCharacter(TextBox3.Text, ".") = 1) then
    'a "." exists so count number of characters after "."

end if

Public Function CountCharacter(ByVal value As String, ByVal ch As Char) As Integer
    Dim cnt As Integer = 0
    For Each c As Char In value
        If c = ch Then cnt  = 1
    Next
    Return cnt
End Function
  

Я не уверен, как проверить количество после «.» хотя

Ответ №1:

Вы могли бы использовать строку.Метод indexOf для этой задачи

 Sub Main
    Dim test = "2adf.2afe"
    Dim result = CountCharsAfter(test, "."c)
    Console.WriteLine(result)
End Sub

Public Function CountCharsAfter(input as string, charToSearch as Char) as Integer
    DIm pos = input.LastIndexOf(charToSearch)
    if pos = -1 then
       return 0
    else
        return input.Length - (pos   1)
    End if
End Function
  

Комментарии:

1. Переосмысление вопроса. Возможно, лучшим методом является lastIndexOf

2. оба, похоже, функционируют должным образом

3. Хорошо, если есть только один «.» оба работают одинаково. Результаты будут другими, если их будет больше одного «.», это причина моего комментария. Это зависит от ваших условий.

Ответ №2:

Попробуйте это

     Dim NoChar As Integer = CalculateChra("12adf.2afe", ".")

Private Function CalculateChra(ByVal V_String As String, ByVal LastChar As Char) As Integer

    Dim Start As String = Split(V_String, LastChar)(0) amp; "."
    Dim M As String = V_String.Substring(Start.Length)
    Return M.Length
End Function
  

Ответ №3:

 dim n,cnt as integer
n=0
cnt=0
   Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
            If e.KeyChar = Chr(46) Then
                n = Len(TextBox1.Text)
            End If
            If n <> 0 Then
                cnt  = 1
            End If
            MsgBox(" no.of charectors after '.' is/are : " amp; cnt - 1)
        End Sub