val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "")
マイ解析された値が今1,172
であると私はので、私はカンマを削除する必要が倍増することを変換したい倍増を変換する前に、解析された文字列からカンマを削除します。は、それが
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "")
マイ解析された値が今1,172
であると私はので、私はカンマを削除する必要が倍増することを変換したい倍増を変換する前に、解析された文字列からカンマを削除します。は、それが
すでにreplaceAll
を使用していた場合、何が問題だったのですか?ちょうど入社、無交換 - あなたはnoobによって示唆されるように
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "").replaceAll(",", "").toDouble
を使用する必要があり、あなたもalternation
val value = "€1,172.46"
val parsed = value.replaceAll("\\p{Sc}|,", "").toDouble
アプローチ#1を使用することができます。
val regex = "[(\\d*)(?:.)*?](\\.\\d{0,2})?"
val result = regex.r.findAllIn(value).mkString("")
接近#2 - 置換、結合なし。
val regex = "[^\\d(?:\\.\\d{0,2})?]"
val result = regex.r.replaceAllIn(value, "")
元のコードと私の違いは、可能であれば小数点の終了を考慮しようとしていることです。
小数点はその場合(ロケール)意味があり、それを切り落とすことはできません。$ 100の違いがあります。
だから私の第二の例では、あなたは私は二つのタイプの許可を参照 - 小数、および除外するための文字の集合にDOT DECIMAL DECIMAL
使用filterNot
で終了する文字列を、
value.filterNot(Set('€', ',')(_))
Scalaの文字列は文字列として扱われるため、文字レベルでフィルタリングを適用することができます。条件はセットに含まれています。
これは巧妙であり、両方を組み合わせて[alteration](https://regex101.com/r/mI9dD1/1)を使って置き換えることができます。 –
@noobはい、あなたは正しいです.. – rock321987
@noobあなたの提案に従って更新 – rock321987