/ / Como faço para remover caracteres não alfanuméricos de uma string e manter espaços? - rubi sobre trilhos, rubi, regex, rubi sobre trilhos-3

Como remover caracteres não alfanuméricos de uma string e manter espaços? - rubi sobre trilhos, rubi, regex, rubi sobre trilhos-3

Eu quero criar um regex que remove todos os caracteres não-alfanuméricos, mas mantém espaços. Isso é para limpar a entrada de pesquisa antes de atingir o banco de dados. Aqui está o que eu tenho até agora:

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

Problema aqui é que remove todos os espaços. Soluções sobre como reter espaços?

Respostas:

158 para resposta № 1

Adicione espaços ao grupo de caracteres negados:

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

5 para resposta № 2

Neste caso, eu usaria o método bang (gsub! Em vez de gsub) para limpar a entrada permanentemente.

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

Isso evita uma situação em que @seach_query é usado em outro lugar no código sem limpá-lo.


3 para resposta № 3

Eu teria usado a abordagem de inclusão. Em vez de excluir todos os números, só incluí números. Por exemplo.

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

-3 para resposta № 4

Uma resposta melhor (pelo menos em rubi) é:

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