Laden...

Nur separierendes Komma ersetzen, nicht den Dezimaltrenner

Erstellt von WiglWagl vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.429 Views
W
WiglWagl Themenstarter:in
40 Beiträge seit 2006
vor 6 Jahren
Nur separierendes Komma ersetzen, nicht den Dezimaltrenner

Servus,

sorry vermutlich eine sehr einfache und Dumme Frage, aber ich stehe gerade voll auf der Leitung.
Ich bekommen einen String ca. so:

"1.245,95","395,50","125.555,95","500,00","5.875,95"

Nun möchte ich alle , durch ; ersetzen, aber nur die, die nicht in den Werten vorkommen. Als
nicht hier "1.245,95" sondern hier ...","...

Wie kann ich das am elegantesten umsetzen?

Vielen Dank
lg
WW

T
2.224 Beiträge seit 2008
vor 6 Jahren

Wie bzw. mit was soll es ersetzt werden?
Billig Lösung wäre folgendes:


string saubererText = text.Replace("\";\"", "\"\"");

Dies ersetzt dann billig deine "," durch "".
Ob dies dein Ziel ist, musst du sagen.
Was genau willst du mit diesem Replacen erreichen?
Willst du die Daten parsen, dann würde ich den Text sauber parsen, da es ja nur CSV Zeilen zu sein scheinen.
Fertige Parser gibt es daür wie Sand am Meer 😃

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

121 Beiträge seit 2016
vor 6 Jahren

Wie bzw. mit was soll es ersetzt werden?

Nun möchte ich alle , durch ; ersetzen 😉

Billig Lösung wäre folgendes:

  
string saubererText = text.Replace("\";\"", "\"\"");  
  

Dies ersetzt dann billig deine "," durch "".

Nein tut es nicht. Es ersetzt ";" durch "". Da aber in WiglWagl's string keine ";" vorkommen ersetzt es nichts.

T
461 Beiträge seit 2013
vor 6 Jahren

Nein tut es nicht. Es ersetzt ";" durch "". Da aber in WiglWagl's string keine ";" vorkommen ersetzt es nichts.

Das ist nicht wirklich eine Aussage, die Meldung war im Grunde schon richtig, nur der Inhalt nicht genau beachtet:


string saubererText = text.Replace("\",\"", "\";\"");

Solang man sich darauf verlassen kann, daß der Aufbau immer so gestellt ist...

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

W
WiglWagl Themenstarter:in
40 Beiträge seit 2006
vor 6 Jahren

Sorry hier noch wie es nachher aussehen solll.

vorher:
"1.245,95","395,50","125.555,95","500,00","5.875,95"

NACHHER:
"1.245,95";"395,50";"125.555,95";"500,00";"5.875,95"

DANKE

3.003 Beiträge seit 2006
vor 6 Jahren

Das wiederum entspricht nicht den Anforderungen, dass Kommas nicht in den Werten ersetzt werden sollen.

@TE: Hier, das Werkzeug deiner Wahl: Regex.Replace()

...und hier ein Hilfsmittel zum Ausprobieren: RegEx 101

Damit hast du alle Tools, die du brauchst.

LaTino
EDIT: für den Fall, dass wirklich ALLE Werte IMMER in Anführungszeichen stehen, geht auch die Variante von ThomasE, aber nach meiner Erfahrung kann man sich da nicht drauf verlassen.

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

W
WiglWagl Themenstarter:in
40 Beiträge seit 2006
vor 6 Jahren

@LaTino perfekt, genau danach habe ich gesucht! Funktioniert wunderbar!

Jetzt nur noch das € entfernen und alles ist gut!

DANKE
lg

D
985 Beiträge seit 2014
vor 6 Jahren

Frage: Warum diese Ersetzungsorgie?

Wenn du eine CSV Datei lesen möchtest, dann nimm dir Filehelpers.net oder eine andere Library und gut ist. Das Ersetzen wird damit ersatzlos gestrichen.