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
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
Wenn Sie bereits replaceAll
verwendet haben, was war das Problem. Sie haben
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "").replaceAll(",", "").toDouble
verwenden Wie noob vorgeschlagen, können Sie auch alternation
val value = "€1,172.46"
val parsed = value.replaceAll("\\p{Sc}|,", "").toDouble
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
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.
Dies ist clever und könnte beide ersetzen in eine mit [Änderung] (https://regex101.com/r/mI9dD5/1). –
@noob Yup Sie haben Recht .. – rock321987
@noob Aktualisiert nach Ihrem Vorschlag – rock321987