Выберите регистр с помощью функции EndsWith()
Приведенный ниже код работает, я не могу не думать, что есть лучший способ сделать это. Кто-нибудь имеет опыт использования функций в сочетании с Select Statements.
Код, который я ожидал бы работать, был бы чем-то похожим...
Select Case File.EndsWith()
Case "example 1", Case "example2"
Этот код работает:
Select Case File.EndsWith(File)
Case tFile.EndsWith("FileA.doc")
sbExisting.AppendLine(Report.sbStart.ToString)
sbExisting.AppendLine(Report.sbHeaders.ToString)
sbExisting.AppendLine(Report.sbItems.ToString)
sbExisting.AppendLine(Report.sbSubreport.ToString)
sbExisting.AppendLine(Report.sbEnd.ToString)
sbExisting.AppendLine(Report.sbCol.ToString)
Case tFile.EndsWith("FileB.doc")
'Slave
sbExisting.AppendLine(Report.sbStart.ToString)
sbExisting.AppendLine(Report.sbItems.ToString)
sbExisting.AppendLine(Report.sbHeaders.ToString)
sbExisting.AppendLine(Report.sbCol.ToString)
sbExisting.AppendLine(Report.sbEnd.ToString)
End Select
2 ответа
.EndsWith()
возвращает истину или ложь. Это все, что у тебя есть.
Если вы хотите использовать Select
с этим, то идиоматический путь
Select Case True
Case tFile.EndsWith("MSMaster.tmp")
...
Case tFile.EndsWith("MSSlave.tmp")
...
End Select
Наличие нескольких вариантов на одной строке не будет иметь большого значения:
Select Case True
Case tFile.EndsWith("example 1"), tFile.EndsWith("example 2")
...
Case tFile.EndsWith("example 3"), tFile.EndsWith("example 4")
...
End Select
Если у вас уже есть список вариантов в массиве / списке / коллекции, вы также можете использовать
Dim choices1 = New String() {"example 1", "example 2"}
Dim choices2 = New String() {"example 3", "example 4"}
Select Case True
Case choices1.Any(Function(s) tFile.EndsWith(s))
...
Case choices2.Any(Function(s) tFile.EndsWith(s))
...
End Select
Или сделайте то же самое inline, если вы предпочитаете:
Select Case True
Case (New String() {"example 1", "example 2"}).Any(Function(s) tFile.EndsWith(s))
...
Case (New String() {"example 3", "example 4"}).Any(Function(s) tFile.EndsWith(s))
...
End Select
Единственная разница между двумя случаями заключается в добавлении sbSubreport
вещь. Это единственный пункт, который нуждается в специальной проверке и может быть выполнен следующим образом
Dim master = tFile.EndsWith("MSMaster.tmp")
Dim slave = tFile.EndsWith("MSSlave.tmp")
If master OrElse slave Then
sbExisting.AppendLine(Report.sbStart.ToString)
sbExisting.AppendLine(Report.sbHeaders.ToString)
sbExisting.AppendLine(Report.sbItems.ToString)
If master Then
sbExisting.AppendLine(Report.sbSubreport.ToString)
End If
sbExisting.AppendLine(Report.sbEnd.ToString)
sbExisting.AppendLine(Report.sbCol.ToString)
End If