正则表达式为 trim 分隔符 Spark Scala 前后的所有空格

Regex to trim all spaces before and after delimiter Spark Scala

我正在使用 spark scala 读取带分隔符的文本文件。我正在尝试为分隔符 ~ 之前的所有内容以及之后的所有内容创建一个正则表达式 trim 。目前,我在所有空间都是 trimmed 的地方拥有它。我正在寻找有关如何完成此操作或进行改进的任何建议。也许某种 trim 函数会更简单。

 def truncateRDD(fileName : String): RDD[String] = {
    val rdd = sc.textFile(fileName)
    rdd.map(lines => lines.replaceAll("""[\t\p{Zs}]+""", ""))
  }

输入:

20161111 ~     ~10~1234~ "This is an example" ~P15~-EXAMPLE~2017~ 2014567EXAMPLE

期望的输出:

20161111~~10~1234~"This is an example"~P15~-EXAMPLE~2017~2014567EXAMPLE

最简单的方法可能是按分隔符 (~) 拆分,然后 trim 每个生成的标记;然后 - 使用 mkString:

将标记组合回单个字符串
rdd.map(_.split("~").map(_.trim).mkString("~"))

或者 - 使用正则表达式:

rdd.map(_.replaceAll("\s*?~\s*", "~"))