Мои данные выглядят так:
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()
Ответ 1 · рейтинг 2 · Mark Hall
Не показывая нам, что вы получаете, я не могу быть уверен, что именно происходит. Но, глядя на ваш код, я считаю, что проблема связана с тем, как вы используете свой 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
Ответ 2 · Zev Spitz
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 для String, который обертывает String.Format:
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)