如何用下划线替换空白并对scala数组/列表中的值进行编码

8zzbczxx  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(390)

我有一个spark scalaDataframe,它有列“name”,我已经将该列的值提取到scala数组[string]

org_name: Array[String] = Array(SARATOGA SENIOR HIGH SCHOOL)

我想用u替换空白,并将该值编码到utf-8(任何编码都可以,只要它用其他内容替换特殊字符),因此如果有任何特殊字符,它们将被删除。稍后我想在文件路径中使用它们。

var org_name = orgsFlatDF.rdd.collect
.map( _.getString(2))

这就是我提取VAL的方法。我还没有找到任何方法可以用来做那件事。replace或replaceall对数组无效
我试过这个:

org_name.replace("\\s", "")

那没用。
预期产出:萨拉托加高中
如果名称为: new $ high school 它应该被转换成 new_$_high_school 然后编码到 new_%24_high_school

gab6jxml

gab6jxml1#

你问的问题有几个。
java/scala数组没有replace方法。即使他们有一个replace方法,他们会替换他们持有的值或字符串中的字符吗?
假设这条线 org_name.replace("\\s", "") 没有编译,org\u name实际上是一个数组[string],包含一个元素。

scala> val org_name=Array("SARATOGA SENIOR HIGH SCHOOL")
val org_name: Array[String] = Array(SARATOGA SENIOR HIGH SCHOOL)
scala> org_name(0).replace(" ","_")
val res15: String = SARATOGA_SENIOR_HIGH_SCHOOL
``` `replace("\\s","_")` 因为它代表了 `\s` 字符串。“\”代表 `\` . 这是定义包含其他转义码的字符串的唯一方法 `\n` 或者 `\t` .
ps:要转换数组中的所有字符串,请使用 `org_name.map(_.replace(" ","_"))` ,这将返回另一个数组。

相关问题