Ответ 1
Вы можете просто добавить \s
(пробел)
string.downcase.gsub(/[^a-z0-9\s]/i, '')
Попытка изменить это:
"The basketball-player is great! (Kobe Bryant)"
в это:
"the basketball player is great kobe bryant"
Хотите удалить и удалить все знаки препинания, но оставить пробелы...
Пробовал string.downcase.gsub(/[^a-z ]/, '')
, но удаляет пробелы
Вы можете просто добавить \s
(пробел)
string.downcase.gsub(/[^a-z0-9\s]/i, '')
Если вы хотите также поймать нелатинские символы:
str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
Некоторые тонкие решения, но проще всего лучше всего:
string.downcase.gsub /\W+/, ' '
Все остальные ответы также выделяют номера. Это работает для приведенного примера, но на самом деле не отвечает на вопрос, как вырезать не буквенно-цифровой.
string.downcase.gsub(/[^\w\s\d]/, '')
a.downcase.gsub(/[^a-z ]/, "")
Обратите внимание на пробелы, которые я добавил после a-z. Также, если вы хотите заменить все пробелы (не только использование пространства \s, как предложено gmalette).