0
我对Vb.Net中的拆分功能有点混淆。vb.net中的拆分功能
If hdnDetails.Value.Split("|").Length = 0 Then
lblMsg.Text="Error"
End If
即使是hdnDetails.Value=""
,这种说法总是如此。分割函数始终返回长度1。什么是获得0长度的解决方案?
我对Vb.Net中的拆分功能有点混淆。vb.net中的拆分功能
If hdnDetails.Value.Split("|").Length = 0 Then
lblMsg.Text="Error"
End If
即使是hdnDetails.Value=""
,这种说法总是如此。分割函数始终返回长度1。什么是获得0长度的解决方案?
String.Split
将永远不会返回一个数组Length = 0
(与此超载)。 MSDN:
如果此实例不包含任何在分离器中的字符, 返回的阵列由包含此 实例的单个元件构成。
所以,你应该用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
你应该注意的是检查,如果数组的长度,如果你想知道1也可以是错误的字符串是否包含分隔符。如果使用带StringSplitOptions
参数的String.Split
超载,则数组长度甚至可以为0。
考虑串只包含分离所以它的"|"
和你通过StringSplitOptions.RemoveEmptyEntries
,那么结果数组将有0的长度。
如果您通过StringSplitOptions.None
您将得到长度为2的数组:两个空字符串。
解决方案是一个空字符串!编辑:对不起,空字符串也返回1。我不确定是否有任何星座返回的数组将是0. – muffi
没有解决方案。您需要检查长度1,这意味着输入文本未被分割。 –
这段代码是[tag:vb.net],请不要使用不必要的标签,如[tag:c#]。 – TheLethalCoder