2013-08-30 68 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 
相关问题