Vb.Netの分割機能でちょっと混乱します。vb.netの分割機能
If hdnDetails.Value.Split("|").Length = 0 Then
lblMsg.Text="Error"
End If
この文は、常にhdnDetails.Value=""
でもtrueです。分割関数は常に長さ1を返します。 0の長さを得るための解決策は何ですか?
Vb.Netの分割機能でちょっと混乱します。vb.netの分割機能
If hdnDetails.Value.Split("|").Length = 0 Then
lblMsg.Text="Error"
End If
この文は、常にhdnDetails.Value=""
でもtrueです。分割関数は常に長さ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であるかどうかをチェックすることも間違っていることに注意すべきです文字列にセパレータが含まれているかどうかを示します。配列の長さは、String.Split
のオーバーロードを使用すると0になります。オーバーロードには、StringSplitOptions
引数が必要です。
はそれが"|"
だとあなたがStringSplitOptions.RemoveEmptyEntries
を渡し、その後、結果の配列は0の長さを持つことになりますので、文字列が唯一の区切りが含まれて考えてみましょう。
StringSplitOptions.None
を渡すと、長さが2:の2つの空文字列が得られます。
解決方法は空の文字列です!編集:ごめんなさい、空の文字列も1を返します。返される配列が0になるコンステレーションがあるかどうかはわかりません。 – muffi
解決策はありません。入力テキストが分割されていないことを意味する長さ1をチェックする必要があります。 –
このコードは[tag:vb.net]です。[tag:c#]などの不要なタグは使用しないでください。 – TheLethalCoder