Aus Zeichenkette eine Double-Zahl (z.B.: 8.12) erhalten

Michael0501

Grünschnabel
Hallo!
Mein Problem ist, dass ich aus einer Datenquelle Daten lese, und dabei gibt es auch ein Feld Preis.

Leider stehen hier nicht immer nur die Zahlen, sondern auch oft Einträge wie "Geschenk", "kostenlos"...

Ich würde gerne:
Alle "," durch "." ersetzen, das ist natürlich einfach.
ABER:
Wie entferne ich alle Zeichen außer die Zahlen und ".", so dass ich einen String, den ich dann zu Double Konvertieren kann, erhalte.

Bitte helfen!
 
Mit einem Regulären Ausdruck. Der könnte etwa so aussehen:
Code:
[^0-9.]
Und alle Zeichen, welche zu diesem Ausdruck passen, werden du einen Leerstring ersetzt.

Aber ich verstehe noch nicht ganz, wie deine Daten konkret aussehen.
 
Ja ich wollte es auch über einen Regulären Ausdruch lösen! Nur wusste ich nicht wie ich das mit dem "." regeln kann.

Hier ein paar Beispieldaten für den Preis:
? 30,90
$74.95
$60.00
? 37,29
Geschenk
? 104,95
$90.95

Ich möchte dann eben alle Buchstaben, Sonderzeichen(bis auf ".") entfernen!
Meine Lösung:
Code:
String x = "$74.95";
x = x.replace(",",".");
x = x.replaceAll("[^0-9.]", "");
System.out.println(x);
Ist wahrscheinlich nicht die schönste Lösung aber sie funktioniert soweit!
Danke!
 
Ich wollte noch erwähnt haben, dass Berechnungen mit double Zahlen ungenau sind!

Daher wäre es ggf. sinnvoll nur für die Anzeige eine Kommazahl zu generieren/parsen und sonst auf Centbasis zu arbeiten.
 
Zurück