2017-05-04 104 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的數組:兩個空字符串