2016-04-03 3 views
-1
val value = "€1,172" 
val parsed = value.replaceAll("\\p{Sc}", "") 

Mein analysiert Wert ist jetzt 1,172 zu verdoppeln, und ich möchte es konvertieren zu verdoppeln so muss ich das Komma entfernen.vor wandeln es

Antwort

1

Wenn Sie bereits replaceAll verwendet haben, was war das Problem. Sie haben

val value = "€1,172" 
val parsed = value.replaceAll("\\p{Sc}", "").replaceAll(",", "").toDouble 

IDEONE DEMO

verwenden Wie noob vorgeschlagen, können Sie auch alternation

val value = "€1,172.46" 
val parsed = value.replaceAll("\\p{Sc}|,", "").toDouble 
+1

Dies ist clever und könnte beide ersetzen in eine mit [Änderung] (https://regex101.com/r/mI9dD5/1). –

+1

@noob Yup Sie haben Recht .. – rock321987

+1

@noob Aktualisiert nach Ihrem Vorschlag – rock321987

0

Ansatz # 1 verwenden - keinen Ersatz, Füge- nur.

val regex = "[(\\d*)(?:.)*?](\\.\\d{0,2})?" 
val result = regex.r.findAllIn(value).mkString("") 

Ansatz # 2 - Ersatz, keine Verbindung.

Der Unterschied zwischen Ihrem ursprünglichen Code und mir ist, dass ich versuche, eine mögliche Dezimalstelle zu berücksichtigen.

Die Dezimalzahl ist in diesem Fall (und Gebietsschema) sinnvoll und Sie können es nicht einfach abhacken - könnte $ 100 anders sein.

Also in meinem zweiten Beispiel sehen Sie, dass ich zwei Arten von Dingen lassen - Dezimalstellen und Strings mit DOT DECIMAL DECIMAL

0

Verwenden filterNot auf einer Reihe von Zeichen enden, auszuschließen

value.filterNot(Set('€', ',')(_)) 

Die String in Scala wird hier als eine Folge von Zeichen behandelt, so dass wir die Filterung auf Zeichenebene anwenden können. Die Bedingung ist am Set Aufnahme.

Verwandte Themen