在“销售”栏中,我的£1200值。 Scala中的Data frame无法读取它,请同样帮助我。我想将列值设为1200的两倍。我正在使用以下方法,但无法正常工作。
def getRemovedDollarValue = udf(
(actualSales: String) => {
val actualSalesDouble = actualSales
.replace(",", "")
.replace("$", "")
.replace("\\u00A3","")
.replace("\\U00A3","")
.replaceAll("\\s", "_").trim().toDouble
java.lang.Double.parseDouble(actualSalesDouble.toString)
}
)
答案 0 :(得分:1)
您需要输入:.replace("\u00A3","")
而不是转义.replace("\\u00A3","")
。
但是我更喜欢:.replace("£", "")
-更具可读性。
答案 1 :(得分:1)
我认为建议的解决方案和注释都可以使用,但不能解决代码无法正常工作的困惑。
从Pattern文档中:
因此,字符串“ \ u2014”和“ \\ u2014”虽然不相等,但会编译为相同的模式,该模式与十六进制值为0x2014的字符匹配。
replace
和replaceAll
都替换了String中所有出现的内容,但是只有replaceAll
接受了正则表达式。您传入的"\\u00A3"
将作为一种模式,但由于添加了反斜杠,因此不能作为Unicode文字。正如已经建议的那样,可以使用unicode文字或实际符号替换,或更改为replaceAll
。