Split("", "|") возвращает 1 элемент
Когда я делаю следующее....
Dim s As String = ""
Dim sLines() As String = s.Split("|", StringSplitOptions.None)
...
sLines.Count составляет 1.
Зачем?
Делить нечего, и разделяемая строка пуста, поэтому я ожидаю, что sLines.Count будет 0.
Спасибо.
3 ответа
Этакая последовательность: если "a|b"
разделить на |
является ["a"
, "b"
] а также "a"
разделить на |
является ["a"
], это имеет некоторый смысл для "|b"
разделить на |
быть [""
, "b"
] а также ""
разделить на |
быть [""
].
Вы можете удалить все пустые записи, передав StringSplitOptions.RemoveEmptyEntries
вместо None
или просто проверьте s = String.Empty
в противном случае вручную.
Проверьте документацию Split
:
Если этот экземпляр не содержит ни одной из строк в разделителе, возвращаемый массив состоит из одного элемента, который содержит этот экземпляр.
Это твой случай. ""
не содержит "|"
так что один элемент ""
возвращается
Ты можешь использовать IIf()
функция для обработки пустой строки
Dim s As String = ""
Dim sLines() As String = IIf(s = String.Empty, Nothing, s.Split("|"))
Dim cnt As Integer
If sLines IsNot Nothing Then
'your code
cnt = sLines.Count
Else
'your code
cnt = 0
End If
Примечание: если вы хотите обработать пробелы (Dim s As String = " "
) просто используй trim()
как это
IIf(Trim(s) = String.Empty, Nothing, s.Split("|"))