これは確かに最善の方法ではありませんが、最良の方法は主観的であり、意見だけでなく複数の状況に依存することが多いため、最善の方法を見つけることができるかどうかはわかりません.
名前付きのテキスト ボックスと名前付きtxtinput
の結果を表示するラベルlblMessage
を想定し、ASCII 文字入力を使用していると仮定します。
あなたが次のような場合に備えてTextChanged
:txtinput
'Check if the length is greater than five, if it is truncate it.
If txtinput.Text.Length > 5 Then
txtinput.Text = Mid(txtinput.Text, 1, 5)
txtinput.Select(txtinput.Text.Length, 0)
End If
'counters for letters and numbers
Dim letters As Integer = 0
Dim numbers As Integer = 0
'Parse and compare the input
For Each c As Char In txtinput.Text
If Asc(c) >= 48 And Asc(c) <= 57 Then 'ASCII characters for 0-9
numbers += 1
ElseIf Asc(c) >= 65 And Asc(c) <= 90 Then 'ASCII characters for A-Z
letters += 1
ElseIf Asc(c) >= 97 And Asc(c) <= 122 Then 'ASCII characters for a-z
letters += 1
End If
Next
If letters = 2 And numbers = 3 Then
lblMessage.Text = "Correct Format"
Else
lblMessage.Text = "Incorrect Format"
End If
Linq の使用:
If txtinput.Text.Length > 5 Then
txtinput.Text = Mid(txtinput.Text, 1, 5)
txtinput.Select(txtinput.Text.Length, 0)
End If
If txtinput.Text.Count(Function(x As Char) Char.IsLetter(x)) = 3 And txtinput.Text.Count(Function(x As Char) Char.IsNumber(x)) = 2 Then
lblMessage.Text = "Correct Format"
Else
lblMessage.Text = "Incorrect Format"
End If