Как удалить подстроку / символ из строки в Scala? - PullRequest
1 голос
/ 13 января 2020

Я пишу программу, в которой мне нужно отфильтровать строку. Итак, у меня есть карта символов, и я хочу, чтобы строка отфильтровывала все символы, которых нет на карте. Есть ли способ для меня сделать это?

Допустим, у нас есть строка и карта:

str = "ABCDABCDABCDABCDABCD"

Map('A' -> "A", 'D' -> "D") 

Затем я хочу, чтобы строка была отфильтрована до:

str = "BCBCBCBCBC"

Кроме того, если я найду данную подстроку в строке, есть ли способ заменить ее другой подстрокой?

Так, например, если у нас есть строка:

"The number ten is even"

Можем ли мы заменить это на:

"The number 10 is even"

1 Ответ

2 голосов
/ 13 января 2020

Чтобы отфильтровать строку с картой, достаточно команды фильтра:

val str = "ABCDABCDABCDABCDABCD"
val m = Map('A' -> "A", 'D' -> "D")

str.filterNot(elem => m.contains(elem))

Более функциональная альтернатива, как рекомендуется в комментариях

str.filterNot(m.contains)

Выход

scala> str.filterNot(elem => m.contains(elem))
res3: String = BCBCBCBCBC

Для замены элементов в строке:

string.replace("ten", "10")

Выход

scala> val s  = "The number ten is even"
s: String = The number ten is even

scala> s.replace("ten", "10")
res4: String = The number 10 is even
...