| 

.NET C# Java Javascript Exception

1
Hey,
ich habe folgenden String (Beispiel): "kunde1";"Betrieb1;Firma2";"Info"Text"";
Ich möchte das ganze so gesplittet haben:
kunde1 Betrieb1;Firma2 Info"Text"

Das heißt es gibt immer ein Trennzeichen (;) und ein Textbegrenzungszeichen (").
Falls es hilft, das ganze soll am Ende eine CSV Datei Fehlertollerant einlesen.
Mir ist zwar klar wie man String splittet, doch wenn ich sage string.splitt(';'), wird mein Teststring ja falsch gesplitet.
Reintheoretisch ergibt sich die Regel, das ein String immer mit " anfangen muss und immer mit "; enden muss (Falls ich ein Denkfehler habe, bitte sagen :) ).

Wie könnte ein Ansatz lauten, ich nämlich komme nicht darauf (Ich brauche keinen Code, sondern nur ein Ansatz, bzw. Methoden)
03.09.2014
Repac3r 33 4
3 Antworten
1
Ich gehöre zu denjenigen, die hier ganz klar den Ansatz "Bibliothek aussuchen und verwenden" empfehlen.

Dazu gab es hier schon mal eine Frage. Und interessant finde ich auch diesen Hinweis auf eine in .NET eingebaute Lösung (hab ich aber nicht selbst ausprobiert).
03.09.2014
Matthias Hlawatsch 13,2k 4 9
1
Bevor Du auf die Suche nach fertigen Bibliotheken gehst, sollte Du aber mal prüfen, ob Dein String wirklich so aussieht:

"kunde1";"Betrieb1;Firma2";"Info"Text"";


1. Hast Du mit dem abschließenden Semikolon insgesamt vier Elemente (am Ende noch den Leerstring).

2. Ist das kein gültiges CSV:

;"Info"Text"";


CSV in der Wikipedia:
Each of the embedded double-quote characters must be represented by a pair of double-quote characters.


Das müsste so aussehen:

;"Info""Text""";


Sonst wunderst Du Dich noch, warum die ganzen Bibliotheken alle nicht funktionieren ;)
04.09.2014
Xantiva 2,3k 2 9
0
Wenn sichergestellt ist, dass die Daten immer in Anführungszeichen eingeschlossen sind, kannst du auch '";"' als Parameter übergeben, da es eine Überladung von Split() gibt, welche strings als Delimiter akzeptiert. Dann bleibt aber noch das Problem, dass im ersten und letzten Teilstring noch jeweils ein Anführungszeichen übrig bleibt.
Eine zweite Möglichkeit wäre, den String, wie du beschrieben hast, zu splitten und die Anführungszeichen über
string.Replace("""", "")
zu entfernen.
Aber eigentlioh gehöre ich, wie Matthias, zu denen die sich lieber eine passende Bibliothek suchen und verwenden.
04.09.2014
luedi 2,0k 1 9

Stelle deine String-Frage jetzt!