val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "")
Benim çözümlenen değer şimdi 1,172
ve ben iki katına dönüştürmek istediğiniz kadar iki katına çıkarmayı dönüştürmek yüzden virgül kaldırmak gerekir.önce
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "")
Benim çözümlenen değer şimdi 1,172
ve ben iki katına dönüştürmek istediğiniz kadar iki katına çıkarmayı dönüştürmek yüzden virgül kaldırmak gerekir.önce
Zaten replaceAll
kullandınız, sorun neydi? Sadece katılmadan hiçbir değiştirmeler - Sen noob önerdiği gibi
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "").replaceAll(",", "").toDouble
kullanmak zorunda, ayrıca alternation
val value = "€1,172.46"
val parsed = value.replaceAll("\\p{Sc}|,", "").toDouble
1. Yaklaşımı kullanabilirsiniz.
val regex = "[(\\d*)(?:.)*?](\\.\\d{0,2})?"
val result = regex.r.findAllIn(value).mkString("")
Yaklaşım # 2 - değiştirmeler, katılmama.
val regex = "[^\\d(?:\\.\\d{0,2})?]"
val result = regex.r.replaceAllIn(value, "")
orijinal kod ve mayın arasındaki fark muhtemelen biten bir ondalık hesaba çalışıyorum olmasıdır.
Ondalık, bu durumda (ve yerel ayar) anlamlıdır ve bunu yalnızca kesemezsiniz - 100 $ farklı olabilir.
Yani benim ikinci örnekte, iki şeyden türlerine izin bakınız -, dışlamak için bir karakter setindeKullanım filterNot
DOT ondalık ile sonlandırma ondalık sayılar ve dizeleri
value.filterNot(Set('€', ',')(_))
Scala'daki dize burada karakter dizisi olarak ele alınır, böylece karakter seviyesinde filtreleme uygulayabiliriz. Durum, dahil edilmek üzere.
Bu, akıllıdır ve her iki değiştirmeyi [değiştirme] (https://regex101.com/r/mI9dD5/1) kullanarak bir araya getirebilir. –
@noob Yup siz haklısınız .. – rock321987
@noob Öneriniz doğrultusunda güncellendi – rock321987