chb1982
Goto Top

Textdatei getrennt durch Pipe in Array zerlegen

Moin zusammen,

im Moment bentutze ich die Funktion csvReader aus dem LumenWorks Framework.
Diese zerlegt eine Kommagetrennet Textdatei in ein Array. Leider nur Kommagetrennt und es gibt keine Möglichkeit das Trennzeichen zu beeinflussen.

Nun habe ich meine Textdatei auf Pipe-Getrennt | umgestellt.

Wie kann ich nun am einfachsten mit VB2008 diese Datei in ein Array zerlegen?

Gruß
Christoph

Content-ID: 118713

Url: https://administrator.de/contentid/118713

Ausgedruckt am: 24.11.2024 um 21:11 Uhr

bastla
bastla 22.06.2009 um 10:48:24 Uhr
Goto Top
Hallo morpheus31337!

Q & D etwa so:
Dim MyLines = Split(New System.IO.StreamReader("D:\Test.txt").ReadToEnd, vbNewLine)  
Dim i As Integer, MyArray(UBound(MyLines))
For i = 0 To UBound(MyLines)
    MyArray(i) = Split(MyLines(i), "|")  
Next

MsgBox("Demo: " & MyArray(2)(4))  
Grüße
bastla

[Edit] Nur zur Sicherheit "System.IO." in Zeile 1 ergänzt. [/Edit]
filippg
filippg 22.06.2009 um 15:11:11 Uhr
Goto Top
Hallo,

der von bastla gepostete Code ist nicht ganz risikolos. Er versagt, wenn der Text auch | enthält. Üblich ist es, dann das gesamte Token in Anführungszeichen zu setzen. Wenn man das behandeln will, muss man den String Schrittweise zerlegen und die Anführungszeichen bis zum nächsten | zählen. Ist die Anzahl ungerade (" können ja auch im Text vorkommen), so ist dieses | kein Trennzeichen, sondern Bestandteil des Tokens. Natürlich ist auch das nicht 100% sicher, da niemand garantieren kann, dass die " immer paarweise gesetzt sind. Lange Rede, kurzer Sinn: Informationen aus CSVs (was auch immer jetzt das Trennzeichen ist) lassen sich nicht immer 100% korrekt zurückgewinnen.

Gruß

Filipp
bastla
bastla 22.06.2009 um 15:17:11 Uhr
Goto Top
@filippg
Full ACK; allerdings sollte ja
Nun habe ich meine Textdatei auf Pipe-Getrennt | umgestellt.
einen Sinn gehabt haben (zB ein Trennzeichen zu verwenden, das nicht in den Daten vorkommt) ...

Grüße
bastla
chb1982
chb1982 24.06.2009 um 08:33:24 Uhr
Goto Top
Zitat von @bastla:
Hallo morpheus31337!

Q & D etwa so:
Dim MyLines = Split(New
> System.IO.StreamReader("D:\Test.txt").ReadToEnd, vbNewLine)  
> Dim i As Integer, MyArray(UBound(MyLines))
> For i = 0 To UBound(MyLines)
>     MyArray(i) = Split(MyLines(i), "|")  
> Next
> 
> MsgBox("Demo: " & MyArray(2)(4))  
> 
Grüße
bastla

Hi,

das klappt soweit super. Vielen Dank bis hier hin.
Ein Problem habe ich aber noch. In der Quelldatei stehen alle Werte in Anführungszeichen. Mit dem csvreader wurden wie entfernt, jetzt habe ich natürlich in jeder Variablen auch die "" drin.
Gibt es da noch eine simple Lösung diese einfach zu ignorieren?
bastla
bastla 24.06.2009 um 10:13:27 Uhr
Goto Top
Hallo morpheus31337!

Sollte mit folgender Zeile 5 klappen:
MyArray(i) = Split(Replace(MyLines(i), """", ""), "|")
Grüße
bastla