分割字符串数组的问题

时间:2014-01-09 21:30:03

标签: vb.net visual-studio-2010

我正在使用webrequests使用此“格式”检索我的Dropbox上的.txt文件中的数据。

SomeStuff
AnotherStuff
StillAnother

我正在使用此代码检索每一行并阅读它:

Private Sub DataCheck()
    Dim datarequest As HttpWebRequest = CType(HttpWebRequest.Create("https://dl.dropboxusercontent.com/u/36066558/Updater/commands/Processkill.txt"), HttpWebRequest)
    Dim dataresponse As HttpWebResponse = CType(datarequest.GetResponse(), HttpWebResponse)
    Dim sr2 As System.IO.StreamReader = New System.IO.StreamReader(dataresponse.GetResponseStream())
    Dim datastring() As String = sr2.ReadToEnd().Split(CChar(Environment.NewLine))
    If datastring(datastring.Length - 1) <> String.Empty Then

        For Each individualdata In datastring
            MessageBox.Show(individualdata)
            Console.WriteLine(individualdata)
        Next
    End If
End Sub

问题是,输出是这样的:

它总是在第一行之后添加一个换行符(等于“”,因为我看到每个但第一行字符串的第一个字符),如: http://img203.imageshack.us/img203/1296/gejb.png

为什么会这样?我也尝试用这样的东西替换Environment.Newline:

Dim newstring as String = individualdata.Replace(Environment.Newline, String.Empty)

但结果是一样的...这里的问题是什么?我试过多个新行字符串和像vbnewline这样的结果,都有相同的结果,有什么想法吗?

2 个答案:

答案 0 :(得分:4)

由于NewLineEnvironment.NewLine string切断CChar,因此String.Split并未分割。您只需使用String()StringSplitOption的{​​{1}}重载:

所以而不是

Dim text = sr2.ReadToEnd()
Dim datastring() As String = text.Split(CChar(Environment.NewLine))

Dim datastring() As String = text.Split({Environment.NewLine}, StringSplitOptions.None)

答案 1 :(得分:2)

我怀疑你的文件包含NewLine + CarriageReturn(vbCrLf)和简单NewLine(vbLf)的混合。
如果是这种情况,那么您可以创建一个可能的分隔符数组

Dim seps(2) as Char 
seps(0) = CChar(vbLf)
seps(1) = CChar(vbCr)
Dim datastring() As String = sr2.ReadToEnd().Split(seps, StringSplitOptions.RemoveEmptyEntries)

StringSplitOptions.RemoveEmptyEntries是必需的,因为vbCrLf在两个分隔符之间创建一个空字符串