2013-08-30 69 views
0

我的數據是這樣的:閱讀在vb.net <tab>後線製表符分隔文本文件的行獲取數據

8/29/2013<tab>1<tab>name<tab>aaaaaaaaaaa<tab>12 
8/29/2013<tab>22<tab>asd<tab>asd<tab>123 
8/29/2013<tab>23<tab>xycabc<tab>asd<tab>12 

,我需要這樣的:

RECEIVED on:8/29/2013 FROM:name AMOUNT:12 
RECEIVED on:8/29/2013 FROM:asdAMOUNT:123 

我已經嘗試這樣:

Dim rvsr As New IO.StreamReader(vcFile) 
Dim vText As String 
Dim vstring(-1) As String 
p1 = " " 
Dim vData As String = "" 
While rvsr.Peek <> -1 
    vText = rvsr.ReadLine() 
    vstring = vText.Split(p1) 
    vData = vData + vbCrLf + "RECEIVED ON: " + vstring(0) + " FROM: " + vstring(1) + " AMOUNT: " + vstring(2) 
End While 
RichTextBox_WD.Text = vData 
rvsr.Close() 

回答

0
RichTextBox_WD.Text = String.Join(vbCrLf, File.ReadLines(vcFile).Select(Function(line) 
                      Dim format = "RECEIVED ON: {0} FROM: {1} AMOUNT {2}" 
                      Dim fields = line.Split(vbTab) 
                      Return String.Format(format, fields(0), fields(1), fields(2)) 
                     End Function) 

我prefe R鍵上IEnumerable<T>它包裝String.Join(以分隔符和一個可選的轉變代表),以及它包裝String.FormatString一個Formatted擴展方法創建一個Joined擴展方法:

RichTextBox_WD.Text = File.ReadLines(vcFile).Joined(vbCrLf, Function(line) 
                   Dim format = "RECEIVED ON: {0} FROM: {1} AMOUNT {2}" 
                   Dim fields = lines.Split(VbTab) 
                   Return format.Formmatted(fields(0), fields(1), fields(2)) 
                  End Function) 
2

沒有向我們展示了什麼你得到我可以不確定到底發生了什麼。但在查看你的代碼時,我認爲這個問題與你如何使用Split有關。我修改了代碼,以適應使用常量的vbTab和使用字符串分隔符的方法的控制檯應用程序,看看這是否是你想要的。

Imports System.IO 

Module Module1 

    Sub Main() 

     Dim vText As String 
     Dim vstring(-1) As String 
     Dim p1 As String() = {vbTab} 'Note I am using a string array and the vbTab Constant 
     Dim vData As String = "" 
     Using rvsr As New StreamReader("C:\\temp\\source.txt") 
      While rvsr.Peek <> -1 
       vText = rvsr.ReadLine() 
       vstring = vText.Split(p1, StringSplitOptions.RemoveEmptyEntries) 'I am also using the option to remove empty entries a 
       vData = vData + vbCrLf + "Recieved On:" + vstring(0) + " From:" + vstring(2) + " Amount:" + vstring(4) 

      End While 
     End Using 
     Console.Write(vData) 
     Console.ReadLine() 
    End Sub 

End Module 
相關問題