Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 什么';这个if语句有什么错?_Vb.net_If Statement - Fatal编程技术网

Vb.net 什么';这个if语句有什么错?

Vb.net 什么';这个if语句有什么错?,vb.net,if-statement,Vb.net,If Statement,如果收到“ffff”,它将立即解析为true并显示消息框。我阅读这篇文章的方式是“如果文本从索引开始(在代码前面初始化为零),距离为1(意味着它只计算这一个字母),不是a-Z或a-Z,那么显示这个消息框。否则,退出这个if语句” 为什么事实并非如此 If (txtPartNum.Text.Substring(index, 1) IsNot "[A-Z]" OrElse txtPartNum.Text.Substring(index, 1) IsNot "[a-z]") Then

如果收到“ffff”,它将立即解析为true并显示消息框。我阅读这篇文章的方式是“如果文本从索引开始(在代码前面初始化为零),距离为1(意味着它只计算这一个字母),不是a-Z或a-Z,那么显示这个消息框。否则,退出这个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),并验证它是否接收到文本框中的第一个字母。我还尝试删除字符模式中的“!”,但这对它是否为真没有影响-每次都是真的。

不太确定您要检查的规则。看起来您正在尝试验证零件号是否以两位数字开头,后跟两个字符。下面是一个示例,但显然要根据您希望执行的规则对其进行相应的更改

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

如果零件号大于4,则检查是否存在
“##???*”

不确定要检查的规则。看起来您正在尝试验证零件号是否以两位数字开头,后跟两个字符。下面是一个示例,但显然要根据您希望执行的规则对其进行相应的更改

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

如果零件号大于4,则检查是否存在
“##???*”

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


^
表示行的开始。
[0-9]
表示范围在“0”到“9”之间的字符。
{2}
表示前一项中的两项,在本例中为
[0-9]
<代码>[A-Za-z]表示这些范围内的字符。没有任何东西可以告诉正则表达式行必须在那里结束,因此允许在两位数字和两个字母之后使用任何字符。

由于输入必须遵循一个简单的模式,因此可以使用正则表达式


^
表示行的开始。
[0-9]
表示范围在“0”到“9”之间的字符。
{2}
表示前一项中的两项,在本例中为
[0-9]
<代码>[A-Za-z]表示这些范围内的字符。没有任何东西可以告诉正则表达式行必须在那里结束,因此允许在两个数字和两个字母之后使用任何字符。

因为您正在比较字符串;不符合某种模式;实际上,使用MaskedTextBox来强制执行输入规则可能是一个不错的主意。
IsNot
不会为您进行模式测试,如果这符合您的要求的话。使用RegEx或
Char.isleter(txtPartNum.Text(0))
似乎您将运算符与运算符混淆了。IsNot表示“不等于”,但用于对象引用;即使这样,您也不希望出现“不等于”的情况,而是希望出现“不匹配该模式”@CrushaK.Rool请求区别,因为您正在比较字符串;不符合某种模式;实际上,使用MaskedTextBox来强制执行输入规则可能是一个不错的主意。
IsNot
不会为您进行模式测试,如果这符合您的要求的话。使用RegEx或
Char.isleter(txtPartNum.Text(0))
似乎您将运算符与运算符混淆了。IsNot表示“不等于”,但用于对象引用;即使这样,你也不希望看到“不等于”,而是希望看到“不符合该模式”@CrushaK.Rool请求不同意见