Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Vb 2010如何拆分(分解)字符串_Vb.net_Visual Studio 2010 - Fatal编程技术网

Vb.net Vb 2010如何拆分(分解)字符串

Vb.net Vb 2010如何拆分(分解)字符串,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,根据我提供的代码,我想将一个字符串分解为两个。代码正在工作,但仅当SearchQuery包含两个短语时,代码才起作用 Private Sub SearchTxt_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles SearchTxt.PreviewKeyDown Dim SearchQuery As String = SearchTx

根据我提供的代码,我想将一个字符串分解为两个。代码正在工作,但仅当
SearchQuery
包含两个短语时,代码才起作用

Private Sub SearchTxt_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles SearchTxt.PreviewKeyDown
    Dim SearchQuery As String = SearchTxt.Text
    Dim MyString As System.String
    MyString = SearchQuery

    Dim OutPutArray() As System.String
    OutPutArray = Split(MyString, " ", -1)
    ''MsgBox(OutPutArray(0)) - Working

    MsgBox(OutPutArray(1)) ' error - Index was outside the bounds of the array.

end sub

数组始终是基于零的(每种类型的集合都是基于零的),因此
OutPutArray(1)
尝试访问第二项而不是第一项。如果它只包含一个,则会出现异常

相反,您需要:
OutPutArray(0)

如果您不知道它是否包含两个,请检查:

Dim first As String = OutPutArray(0)
Dim second As String = Nothing
If OutPutArray.Length > 1 Then 
    second = OutPutArray(1)
End If
另外,我建议使用.NET方法,因此
String.Split

Dim OutPutArray As String() = MyString.Split() ' splits by white-spaces, tabs or newlines
或者,如果只希望按空格分割:

 Dim OutPutArray As String() = MyString.Split({" "}, StringSplitOptions.None) 

为什么不使用
String.Split(“/c)
”,而不是旧VB6天的组件?字符串是否包含空格?@Salman,目的是从空格中滑出,因此我同时查找OutPutArray(0)和OutPutArray(1),在我的情况下,我该怎么办it@user4649925:你试过什么
如果OutPutArray.Length>1,则second=OutPutArray(1)
不会给出错误。但是,如果数组为空,则在
OutPutArray(0)
处会出现异常。但是,
String.Split
从不返回空数组。
Dim MyString As System.String MyString=SearchQurry Dim OutPutArray As String()如果OutPutArray.Length>1,则Dim second As String=Nothing,然后second=OutPutArray(1)MsgBox(OutPutArray(1))'错误在这里
字符串是否为空,它不会给我错误。我哪里弄错了?@user4649925:您在
MsgBox(OutPutArray(1)
处得到异常,因为它不在
If
的内部。使用
If OutPutArray.Length>1然后秒=OutPutArray(1)MsgBox(OutPutArray(1)如果
,则结束。如果字符串为空
string.Split
返回包含单个字符串的数组,该字符串为
string.empty