2017-05-04 107 views
0

我对Vb.Net中的拆分功能有点混淆。vb.net中的拆分功能

If hdnDetails.Value.Split("|").Length = 0 Then 
     lblMsg.Text="Error" 
End If 

即使是hdnDetails.Value="",这种说法总是如此。分割函数始终返回长度1。什么是获得0长度的解决方案?

+0

解决方案是一个空字符串!编辑:对不起,空字符串也返回1。我不确定是否有任何星座返回的数组将是0. – muffi

+1

没有解决方案。您需要检查长度1,这意味着输入文本未被分割。 –

+0

这段代码是[tag:vb.net],请不要使用不必要的标签,如[tag:c#]。 – TheLethalCoder

回答

3

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的数组:两个空字符串