Выберите регистр с помощью функции 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
Другие вопросы по тегам