0

当我执行以下操作时......

    Dim s As String = ""
    Dim sLines() As String = s.Split("|", StringSplitOptions.None)

...

sLines.Count 为 1。

为什么?

没有什么要拆分的,要拆分的字符串是空的,所以我希望 sLines.Count 为 0。

谢谢你。

4

3 回答 3

3

检查文档Split

如果此实例不包含分隔符中的任何字符串,则返回的数组由包含此实例的单个元素组成。

这是你的情况。""不包含"|",因此返回单个元素""

于 2015-12-31T00:43:47.497 回答
3

一种一致性:如果"a|b"split on|是 [ "a", "b"] 并且"a"split on|是 [ ],那么 split on是[ , ]并且split on是[ "a"] 是有意义的。"|b"|"""b"""|""

您可以通过传递而不是删除所有空条目,或者仅手动检查。StringSplitOptions.RemoveEmptyEntriesNones = String.Empty

于 2015-12-31T00:46:15.480 回答
0

您可以使用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("|"))

于 2015-12-31T06:04:00.683 回答