Подтвердить что ты не робот

Зачистка не-буквенно-цифровых символов, но оставление пробелов в Ruby

Попытка изменить это:

"The basketball-player is great! (Kobe Bryant)"

в это:

"the basketball player is great kobe bryant"

Хотите удалить и удалить все знаки препинания, но оставить пробелы...

Пробовал string.downcase.gsub(/[^a-z ]/, ''), но удаляет пробелы

4b9b3361

Ответ 1

Вы можете просто добавить \s (пробел)

string.downcase.gsub(/[^a-z0-9\s]/i, '')

Ответ 2

Если вы хотите также поймать нелатинские символы:

str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"

Ответ 3

Некоторые тонкие решения, но проще всего лучше всего:

string.downcase.gsub /\W+/, ' '

Ответ 4

Все остальные ответы также выделяют номера. Это работает для приведенного примера, но на самом деле не отвечает на вопрос, как вырезать не буквенно-цифровой.

string.downcase.gsub(/[^\w\s\d]/, '')

Ответ 5

a.downcase.gsub(/[^a-z ]/, "")

Обратите внимание на пробелы, которые я добавил после a-z. Также, если вы хотите заменить все пробелы (не только использование пространства \s, как предложено gmalette).