在将其转换为double之前从解析后的字符串中删除逗号

时间:2016-04-03 07:33:21

标签: regex scala

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

我的解析值现在为1,172,我想将其转换为double,因此我需要删除逗号。

3 个答案:

答案 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中的字符串在这里被视为一系列字符,因此我们可以在字符级别应用过滤。条件是集合包含。