Forums Neueste Beiträge
 

RegEx-Lösung für Semikolonseparierte CSV-Datei

18/01/2010 - 13:18 von Carsten Ilwig | Report spam
Hallo Leute,

ich bin auf der Suche nach einer RegEx-Lösung um z.Bsp. diesen String:

70007;12012010;" 8";4940;"Buch LED;
Aufbewahrungspfl.";0,00;"DTYWH5JIR";0,00;69,75;"01-2010/0002";20;"RE";"";"";0,00

so aufzusplitten, dass ich für jedes Feld einen einzelnen Wert bekomme.
Normalerweise ist das ja mit der Split(';')-Function überhaupt kein Problem,
nur bei der obigen Zeile habe ich das Problem, das die Zeichenkette "Buch
LED; Aufbewahrungspfl." auch ein Semikolon enthàlt
und dadurch das Ergebnis von Split(';') ein falsches Ergebnis liefert.

Nun hatte ich die Idee, die "einfache" Split()-Funktion durch einen
RegEx-Aufruf zu ersetzen,
der mir die Zeichenkette korrekt zerlegt, also ein Semikolon innerhalb einer
mit "" eingeschlossenen Zeichenkette ignoriert.

Leider reichen meinen einfachen RegEx-Kenntnisse dafür nicht aus.

Kann mir da bitte jemand weiterhelfen?

Vielen Dank im Voraus
Carsten
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
18/01/2010 - 15:43 | Warnen spam
Hallo Carsten,

"Carsten Ilwig" schrieb:

Nun hatte ich die Idee, die "einfache" Split()-Funktion durch einen RegEx-Aufruf zu ersetzen,
der mir die Zeichenkette korrekt zerlegt, also ein Semikolon innerhalb einer mit "" eingeschlossenen Zeichenkette ignoriert.

Leider reichen meinen einfachen RegEx-Kenntnisse dafür nicht aus.



nur so gefragt: Warum nutzt Du nicht eine OleDbConnection, die die CSV Datei
verarbeiten kann?



Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=X:\Ordner\;Extended Properties=Text;"
Dim Connection As New OleDbConnection( ConnectionString )
Dim DataAdapter As New OleDbDataAdapter( "SELECT * FROM [test.csv]", Connection )
Dim DataTable As New DataTable( "Test" )
DataAdapter.Fill( DataTable )

...

DataTable.Dispose()
DataAdapter.Dispose()

Connection.Close()
Connection.Dispose()



Wenn benötigt, kannst Du eine schema.ini Datei aufbauen, die die Inhalt nàher
spezifiziert. Wenn schon eine existiert, muss die lediglich ins gleiche Verzeichnis
wie die CSV Datei.

Beachte bei Verwendung der Jet Engine, dass die Anwendung explizit x86 als Ziel-
plattform hat, sonst gehts auf 64 Bit Systemen leider nicht, da es die Jet Engine
nicht für 64 Bit gibt.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen