如果接收到“ffff”,则立即解析为true并显示消息框。我正在阅读的方式是“如果从索引处开始(在代码中早些时候初始化为0)并且距离为1(意味着它仅评估该单个字母)的文本不是AZ或az,那么显示此消息框。否则,退出此if语句”这个if语句有什么问题?
为什么是不是出了什么实际发生的?
If (txtPartNum.Text.Substring(index, 1) IsNot "[A-Z]" OrElse txtPartNum.Text.Substring(index, 1) IsNot "[a-z]") Then
MessageBox.Show("Error: Part number must contain two numbers followed by two letters. first")
blnValid = False
End If
编辑:我想切换到这一点,我没有得到任何这方面的运气,要么
If (txtPartNum.Text.Substring(index, 1) Like "[!A-Z]" OrElse txtPartNum.Text.Substring(index, 1) Like "[!a-z]") Then
MessageBox.Show("Error: Part number must contain two numbers followed by two letters. first")
blnValid = False
End If
编辑2:我做了一个字符串来保存txtPartNum.Text.Substring(指数,1),并验证它正在接收文本框中的第一个字母。我也尝试删除“!”在角色模式中,这对它是否解决问题没有影响 - 它每次都是正确的。
因为你在比较字符串;不匹配某种模式;使用MaskedTextBox来强制执行输入规则可能是一个不错的主意 – Sehnsucht
IsNot'不会为你进行模式测试,如果它符合你的要求。使用正则表达式或'Char.IsLetter(txtPartNum.Text(0))' – Plutonix
您似乎已经将[IsNot](https://msdn.microsoft.com/en-us/library/t3bat82c.aspx)运算符与[Like](https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx)运算符。 –