Выберите Case True в VB.NET
У меня есть следующий случай выбора, где я хочу сделать несколько проверок того, что содержит строка, и вызвать некоторые функции для каждого случая. Но, похоже, что если несколько условий выполняются, учитывается только первое условие. Проблема в том, что у меня около 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 ответа
Вот как определяется случай выбора. Использование последовательности операторов If будет работать.
Рассмотрим решение на основе таблиц (псевдокод):
For Each pat In patterns
If command contains pattern.pat
perform pattern.action
Просто мысль, но как насчет
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
Я предполагаю, что на основании различных критериев вы выполняете разные действия, поэтому я не уверен, как бы вы выполняли "execute pattern.action", если только это не является способом динамического выполнения кода, о котором я не знаю, и было бы совершенно круто, если бы это можно было сделать.
Мое предложение действительно уничтожает команду, поэтому я использую переменную временного хранения, чтобы исходная команда не терялась, на случай, если она понадобится вам в коде.