Как заменить пробелы на подчеркивание и закодировать значения в массиве / списке scala - PullRequest
0 голосов
/ 14 июля 2020

У меня есть искра scala фрейм данных, в котором есть столбец «Имя». Я извлек значения этого столбца в scala массив [строка]

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

Я хочу заменить пробелы на _ и закодируйте это значение в utf-8 (любая кодировка хороша, если она заменяет специальные символы чем-то другим), поэтому, если есть какие-либо специальные символы, они будут удалены. позже я захочу использовать их в пути к файлу.

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

Вот как я извлекаю эти значения ^^. Я не нашел метода, который можно было бы использовать для этого. Заменить или заменить все не работает в массиве

Я пробовал это:

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

Это не сработало.

Ожидаемый результат: SARATOGA_SENIOR_HIGH_SCHOOL

если имя: new $ high school, оно должно быть преобразовано в new_$_high_school, а затем закодировано в new_%24_high_school

1 Ответ

0 голосов
/ 15 июля 2020

Есть пара проблем с тем, что вы спрашиваете.

Java / Scala Массивы не имеют метода замены. Даже если бы у них был метод замены, заменили бы они значения, которые они хранят, или символы в строке, которую они содержат?

Предположим, эта строка org_name.replace("\\s", "") не скомпилирована и org_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. "\" представляет \. Только так вы сможете определять строки, содержащие другие escape-коды, такие как \n или \t.

PS: для преобразования всей строки в массиве используйте org_name.map(_.replace(" ","_")), это дает вам другой другой массив.

...