Spark处理⼀批⽂本数据的时候,有的⽂本中存在'\'字符,在拼接Json字符串的时候会错误的将Json的 " 转义掉,这样会导致Json的解析异常,所以需要将'\'去掉,然后⾸先想到了下⾯的写法:
val str = """\哈哈哈\"""
// 注意,这是错误的写法!
结果出现了下⾯的异常:
Exception in thread "main" PatternSyntaxException: Unexpected internal error near index 1
\
^
at (Pattern.java:1924)
at Patternpile(Pattern.java:1671)
at Pattern.<init>(Pattern.java:1337)
at Patternpile(Pattern.java:1022)
at java.placeAll(String.java:2162)
usoft.apps.Test$.main(Test.scala:37)
usoft.apps.Test.main(Test.scala)
原因是:'\' 其实在正则表达式中依然是转移字符,虽然 """\""" 这种写法,在Scala中不需要转义就代表 '\' 字符,但是
Pattern中仍然将其视为转义符,⽽转义符后⾯没有跟待转义的字符,然后就报错了。
所以,转义符'\' 后再加上 '\' ,再进⾏⼀次转义才相当于字符 '\' 。
val str = """\哈哈哈\"""
或者
val str = """\哈哈哈\"""
replaceall()同理,在String.split()⽅法中也是如此。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论