/ / Як я змалюю символи, що не містять буквено-цифрові символи, з рядка та зберігаю пробіли? - ruby-on-rails, ruby, regex, ruby-on-rails-3

Як я можу позбавити від рядка не буквено-цифрові символи та зберігати пробіли? - рубіни на рейках, рубінові, регулярні вигини, рубіни на рейках-3

Я хочу створити регулярний вираз, який видаляє всі символи, які не є алфавітними, але зберігає пробіли. Це призначено для очищення вводу пошуку, перш ніж він потрапить до db. Ось що я до сих пір:

@search_query = @search_query.gsub(/[^0-9a-z]/i, "")

Проблема тут полягає в тому, що вона видаляє всі пробіли. Рішення про те, як зберегти простір?

Відповіді:

158 для відповіді № 1

Додайте пробіли до групи з відхиленими символами:

@search_query = @search_query.gsub(/[^0-9a-z ]/i, "")

5 для відповіді № 2

У цьому випадку я б використовував метод bang (gsub! Замість gsub), щоб очистити вхід постійно.

#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/W/,"")

Це дозволяє уникнути ситуації, коли @seach_query використовується в іншому місці в коді без очищення.


3 для відповіді № 3

Я б використав підхід включення. Замість того, щоб виключити всі, крім чисел, я б включив лише номери. Напр.

@search_query.scan(/[da-zs]/i).join

-3 для відповіді № 4

Найкраща відповідь (принаймні на ruby):

@search_query.gsub!(/^(w|s*)/,"")