2014-01-09 138 views
3

我正在使用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,都有相同的结果,有什么想法?

回答

4

由于您正在切断Environment.NewLine这是stringCChar,因此您没有按NewLine分割。你只需要使用String.Split,需要一个String()过载和StringSplitOption

所以不是

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

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

谢谢,这工作的数组!我可能不得不学习更多关于分裂,因为我从来没有使用重载...我转换与CChar因为我不记得在这种情况下使用大括号和选项严格抱怨:p – SomeNickName

2

我怀疑你的文件包含换行符的组合+ 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创建了两个隔板之间的空字符串

+0

您的解决方案也可以,非常感谢你很多,我不知道;) – SomeNickName

+0

感谢您的回答,到处搜索这是唯一的工作。 – Kangoo13