#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