在vb.net </tab>中的<tab>之后逐行读取制表符分隔的文本文件

时间:2013-08-30 03:39:04

标签: vb.net vb.net-2010

我的数据如下:

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()

2 个答案:

答案 0 :(得分:2)

没有告诉我们你得到了什么,我无法确定究竟发生了什么。但在查看代码时,我认为问题与您使用Split的方式有关。我使用vbTab常量和使用字符串分隔符的String.Split方法修改了代码以适应控制台应用程序,看看这是否是你想要的。

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

答案 1 :(得分: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)

我更喜欢在Joined上创建IEnumerable<T>扩展方法,其中包含String.Join(采用分隔符和可选的转换委托),以及Formatted扩展方法{ {1}}包裹String

String.Format