1

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

2 回答 2

4

这就是选择案例的定义方式。使用一系列 If 语句将起作用。

考虑一个表驱动的解决方案(伪代码):

For Each pat In patterns
  If command contains pattern.pat
    perform pattern.action
于 2013-01-06T14:20:51.210 回答
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”,除非这是一种动态执行代码的方式,我不知道并且如果可以做到,那就太酷了。

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

于 2013-01-28T13:03:35.857 回答