Как проще всего определить, содержит ли одномерный массив строк только строки нулевой длины? - PullRequest
2 голосов
/ 28 июля 2011

Первая очевидная мысль:

Public Function CheckStrings(ByVal input As String()) As Boolean
    For Each s As String In input
        If s.Length > 0 Then Return True
    Next
    Return False
End Function

Я уверен, что есть более простой способ, чем этот.По крайней мере, проще с точки зрения кода, если не обязательно производительности.

Конечный результат:

Ну, вы, ребята, довольно хорошо упростили работу.Отлично сработано.Я думаю, что я все еще буду использовать расширение, чтобы сделать его намного проще в основном коде.Окончательный результат сам по себе не так уж и плох.

Вот мой окончательный код:

<Extension()> _
Public Function AnyNonZero(ByVal value As String()) As Boolean
    If Not value.All(Function(x) String.IsNullOrEmpty(x)) Then Return True
    Return False
End Function

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Вы можете использовать это для возврата true, если все элементы имеют нулевую длину.

Dim inputIsEmpty As Boolean = Array.TrueForAll(input, Function(x) x.Length = 0)

Будьте осторожны с нулевыми ссылками. Вы можете использовать это вместо:

Dim inputIsEmpty As Boolean = Array.TrueForAll(input, Function(x) String.IsNullOrEmpty(x))
2 голосов
/ 28 июля 2011

Вот функция Linq, похожая на Array.TrueForAll:

Dim allEmpty = values.All(Function(x) x.Length = 0)

Я считаю, что это немного легче для чтения, чем Array.TrueForAll.

2 голосов
/ 28 июля 2011

Как насчет этого? Он использует ваш строковый массив с именем input.

Array.TrueForAll(input, AddressOf ZeroLengthString)

Private Function ZeroLengthString(ByVal s As String) As Boolean
    Return s.Length = 0
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...