我在Vb.Net中的Split功能中有点混淆。
If hdnDetails.Value.Split("|").Length = 0 Then
lblMsg.Text="Error"
End If
即使hdnDetails.Value=""
,此陈述也始终为真。拆分功能总是返回长度1。获得0长度的解决方案是什么?
答案 0 :(得分:3)
String.Split
永远不会返回带有Length = 0
的数组(带有此重载)。 MSDN:
如果此实例不包含分隔符中的任何字符, 返回的数组由包含它的单个元素组成 实例
因此,如果要检查字符串是否包含char:
,则应使用String.Contains
If Not hdnDetails.Value.Contains("|") Then
lblMsg.Text="Error"
Else
Dim array = hdnDetails.Value.Split("|")
' Do something with this array if you need it
End If
您应该注意,如果您想知道字符串是否包含分隔符,那么检查数组长度是否也可能是错误的。如果使用带有StringSplitOptions
参数的String.Split
重载,则数组长度甚至可以为0。
考虑字符串仅包含分隔符,因此它是"|"
并且您传递StringSplitOptions.RemoveEmptyEntries
,然后结果数组的长度为0 。
如果你通过StringSplitOptions.None
,你会得到一个长度为2的数组:两个空字符串。