我有一个带有很多或语句的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逻辑运算符?
答案 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;
}