val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "")
我的解析值现在为1,172
,我想将其转换为double,因此我需要删除逗号。
答案 0 :(得分:1)
当您使用replaceAll
时出现了什么问题。你必须使用
val value = "€1,172"
val parsed = value.replaceAll("\\p{Sc}", "").replaceAll(",", "").toDouble
<强> IDEONE DEMO 强>
根据noob的建议,您还可以使用alternation
val value = "€1,172.46"
val parsed = value.replaceAll("\\p{Sc}|,", "").toDouble
答案 1 :(得分:0)
方法#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终止的字符串
答案 2 :(得分:0)
在要排除的字符集上使用filterNot
,
value.filterNot(Set('€', ',')(_))
Scala中的字符串在这里被视为一系列字符,因此我们可以在字符级别应用过滤。条件是集合包含。