这个if语句有什么问题?

时间:2016-11-20 16:30:31

标签: vb.net if-statement

如果收到“ffff”,它会立即解析为true并显示消息框。我正在读这个的方式是“如果文本,从索引开始(在代码中较早初始化为零)并且距离为1(意味着它只评估这个单个字母)不是AZ或az,那么显示此消息框。否则,退出此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(index,1),并验证它是否正在接收文本框中的第一个字母。我也尝试删除“!”在角色模式中,这对于它是否解决是否真实没有影响 - 每次都是真实的。

2 个答案:

答案 0 :(得分:3)

由于您有一个输入必须符合的简单模式,您可以使用正则表达式

^

[0-9]表示该行的开头。 {2}表示范围内的字符" 0"至" 9"。 [0-9]恰好表示前一项中的两项 - 在本例中为[A-Za-z]。 {{1}}表示这些范围内的字符。没有什么可以告诉正则表达式必须在那里完成,所以允许在两位数字和两个字母之后的任何字符。

答案 1 :(得分:1)

不完全确定您要检查的规则。看起来您正在尝试验证部件号是否以两个数字后跟两个字符开头。这是一个示例,但显然会根据您要强制执行的规则进行更改。

If txtPartNum.Text LIKE "##??" = False Then
      MessageBox.Show("Error: Part number must contain two numbers followed by two letters.")
      blnValid = False
End If

如果部件号超过4,请检查"##??*"

相关问题