Удаление нескольких типов символов из строки

Является ли это приемлемым методом для удаления нескольких типов символов из строки или есть лучший (более эффективный способ)? Бит "ilr".contains(_) немного похож на обман, считая, что это будет сделано для каждого персонажа, но опять же, может быть, это правильный путь. Есть ли более быстрый или эффективный способ сделать это?

val sentence = "Twinkle twinkle little star, oh I wander what you are"

val words = sentence.filter(!"ilr".contains(_))   

// Result: "Twnke twnke tte sta, oh I wande what you ae"

Ответ 1

Не было бы существенной разницы, так как есть только 3 символа для удаления и не так большой строки для фильтрации, но вы можете подумать о том, чтобы использовать Set для этой цели. Например.

val toRemove = "ilr".toSet
val words = sentence.filterNot(toRemove)

Ответ 2

Я бы просто использовал Java добрый старый replaceAll (требуется регулярное выражение):

"Twinkle twinkle little star, oh I wander what you are" replaceAll ("[ilr]", "")
// res0: String = Twnke twnke tte sta, oh I wande what you ae

В отличие от работы с char (как при фильтрации Seq[Char]), использование регулярных выражений должно быть безопасным для Unicode, даже если вы работаете с кодовыми точками вне базовой многоязычной плоскости. "Нет такой вещи как обычный текст" .

Ответ 3

Это "КАК мне интересно, кто ты". Совершенно очевидно, что у тебя нет детей.