在VB.NET中选择Case True

时间:2013-01-06 14:13:04

标签: .net vb.net select-case

我有以下选择案例,我想对字符串包含的内容进行一些检查,并为每种情况调用一些函数。但似乎如果多个条件成立,它只考虑第一个条件。问题是我有大约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

2 个答案:

答案 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”,除非这是一种动态执行代码的方法,我不这样做如果可以的话,他们知道并且会非常酷。

我的建议确实会破坏命令,这就是为什么我使用临时保持变量以便原始命令不会丢失的原因,以防你在代码中进一步需要它。