我有一个spark scala dataframe,它有列"Name“,我已经将该列的值提取到scala arraystring中
org_name: Array[String] = Array(SARATOGA SENIOR HIGH SCHOOL)
我想用_替换空格,并将该值编码为utf-8 (只要用其他字符替换特殊字符,任何编码都可以),因此如果有任何特殊字符,这些字符将被删除。稍后,我想在文件路径中使用它们。
var org_name = orgsFlatDF.rdd.collect
.map( _.getString(2))
这就是我提取这些字符的方法^^。我还没有找到任何可以用来做这件事的方法。Replace或Replace array在数组上无效
我试过这个:
org_name.replace("\\s", "")
这不管用。
预期输出: SARATOGA_SENIOR_HIGH_SCHOOL
如果名称为:new $ high school
,则应将其转换为new_$_high_school
,然后编码为new_%24_high_school
发布于 2020-07-15 07:28:36
你所问的有几个问题。
Java/Scala数组没有replace方法。即使它们有一个replace方法,它们会替换它们持有的值或字符串中的字符吗?
让我们假设这一行org_name.replace("\\s", "")
没有编译,而org_name确实是一个包含一个元素的ArrayString。
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(" ","_"))
转换数组中的所有字符串,这将返回另一个数组。
https://stackoverflow.com/questions/62899975
复制相似问题