执行OR语句的更简单方法

时间:2011-12-22 21:49:40

标签: vb.net

我有一个带有很多或语句的if语句,因为有很多可能的输入。有没有比这更简单的方法或陈述:

If arrValue(strLength - i) = "0" Or arrValue(strLength - i) = "1" Or arrValue(strLength - i) = "2" Or arrValue(strLength - i) = "3" Or arrValue(strLength - i) = "4" Or arrValue(strLength - i) = "5" Or arrValue(strLength - i) = "6" Or arrValue(strLength - i) = "7" Or arrValue(strLength - i) = "8" Or arrValue(strLength - i) = "9" Or arrValue(strLength - i) = "a" Or arrValue(strLength - i) = "b" Or arrValue(strLength - i) = "c" Or arrValue(strLength - i) = "d" Or arrValue(strLength - i) = "e" Or arrValue(strLength - i) = "f" Then

就像我能做的那样:

If arrValue(strLength - i) = "0" Or "1" Or "2" Or "3" Or "4" Or "5" Or "6" Or "7" Or "8" Or "9" Or "a" Or "b" Or "c" Or "d" Or "e" Or "f" Then
这将节省我很多时间和空间。那么是否有更简洁的方法来使用OR逻辑运算符?

5 个答案:

答案 0 :(得分:3)

是的,您可以使用regular expressions

    string pattern = "[0-9a-z]";
    string valid = "a";
    string notValid = "?";

    var reg = new Regex(pattern);
    if (reg.IsMatch(valid))
    {
        ...
    }

这是c#,但使用link你应该能够翻译它。

如果它始终只是一个字符,您也可以将该字符串转换为整数,然后将其与((int)'0', (int)'9')((int)'a', (int)'z')的范围进行比较。这是我的解决方案,当我不知道正则表达式时:)

答案 1 :(得分:3)

案例陈述可能稍微“忙”:

SELECT CASE arrValue(strLength - i)

   CASE "1", "2", "3", "4", "5"
    'Do something
   CASE "6", "7", "8", "9", "10"
    'Do something

END SELECT

答案 2 :(得分:2)

让我们看看完整的代码块。如果我们能够看到背景,我相信有更好的方法可以做你想做的事情。

将arrValue(strLength - i)分配给变量以缩短事物。

Dim s As String  = arrValue(strLength - i)
Dim possibleValues As String = "0123456789ABCDEF"
For Each Char c In possibleValues
 if(s.toChar = c) then
  doSomething()
 end if
Next c

抱歉,我的VB生锈了,您可以将上面的内容作为伪代码。

答案 3 :(得分:1)

如何使用某种查找进行创建?

Dim arrValue = "Hello"
Dim matches = "01234567890abcedf".ToCharArray()

For i = 0 To arrValue.Length

    If matches.Contains(arrValue(arrValue.Length - i)) Then
        '  Do work here
    End If
Next

......是的,这看起来真的像Regex的工作,但这是另一种解决问题的方法。

答案 4 :(得分:0)

为什么不使用SWITCH声明?

switch(arrValue(strLength - i))
{
case 0:
"do this";
break;

case 1:
"do this";
break;
}