2014-01-09 51 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