我有以下选择案例,我想对字符串包含的内容进行一些检查,并为每种情况调用一些函数。但似乎如果多个条件成立,它只考虑第一个条件。问题是我有大约113种不同的情况。
我是否必须为每个案例使用if语句?
Select Case True
Case command.ToUpper.Contains(" S:")
'Do something
Case command.ToUpper.Contains(" C:")
'Do something
Case command.ToUpper.Contains(" *S")
'Do something
Case command.ToUpper.Contains(" *C")
'Do something
Case command.ToUpper.Contains(" CC")
'Do something
Case command.ToUpper.Contains(" SS")
End Select
答案 0 :(得分:4)
这就是如何定义选择案例。使用一系列If语句就可以了。
考虑一个表驱动的解决方案(Pseudocode):
For Each pat In patterns
If command contains pattern.pat
perform pattern.action
答案 1 :(得分:0)
只是一个想法,但是呢?
dim tempCommand as string = command.ToUpper()
dim match as boolean = true
while match andalso tempCommand.length > 0
select case true
Case tempCommand.Contains(" S:")
'Do something
'then do this
tempCommand = tempCommand.replace(" S:","")
Case tempCommand.Contains(" C:")
'Do something
'then do this
tempCommand = tempCommand.replace(" C:","")
Case tempCommand.Contains(" *S")
'Do something
'then do this
tempCommand = tempCommand.replace(" *S","")
Case tempCommand.Contains(" *C")
'Do something
'then do this
tempCommand = tempCommand.replace(" *C","")
Case tempCommand.Contains(" CC")
'Do something
'then do this
tempCommand = tempCommand.replace(" CC","")
Case command.ToUpper.Contains(" SS")
'then do this
tempCommand = tempCommand.replace(" SS","")
case else match = false
end select
end while
我假设你根据各种标准执行不同的操作,所以我不确定如何执行“执行pattern.action”,除非这是一种动态执行代码的方法,我不这样做如果可以的话,他们知道并且会非常酷。
我的建议确实会破坏命令,这就是为什么我使用临时保持变量以便原始命令不会丢失的原因,以防你在代码中进一步需要它。