我正在使用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这样的结果,都有相同的结果,有什么想法吗?
答案 0 :(得分:4)
由于NewLine
与Environment.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在两个分隔符之间创建一个空字符串