regulares regular expressions expresiones examples ruby-on-rails ruby regex

ruby on rails - regular - ¿Cómo puedo eliminar caracteres especiales?



ruby regular expressions examples (5)

Estoy practicando con Ruby y Regex para eliminar ciertos caracteres no deseados. Por ejemplo:

input = input.gsub(/<//?[^>]*>/, '''')

y para caracteres especiales, ejemplo ☻ o ™:

input = input.gsub(''&#'', '''')

Esto solo deja números, vale. Pero esto solo funciona si el usuario ingresa un carácter especial como un código, como este:

&#153;

Mi pregunta: cómo puedo eliminar caracteres especiales si el usuario ingresa un carácter especial sin código, como este:

™ ☻


En primer lugar, creo que sería más fácil definir lo que constituye "entrada correcta" y eliminar todo lo demás. Por ejemplo:

input = input.gsub(/[^0-9A-Za-z]/, '''')

Si eso no es lo que quieres (quieres admitir alfabetos no latinos, etc.), entonces creo que debes hacer una lista de los glifos que quieres eliminar (como ™ o ☻), y eliminarlos uno a uno , ya que es difícil distinguir entre un carácter chino, árabe, etc. y una pictografía mediante programación.

Finalmente, es posible que desee normalizar su entrada mediante la conversión hacia o desde secuencias de escape de HTML.


Puede hacer coincidir todos los caracteres que desee y, a continuación, unirlos, así:

original = "aøbæcå" stripped = original.scan(/[a-zA-Z]/).to_s puts stripped

que saca "abc"


Puedes usar parameterize :

''@!#$%^&*()111''.parameterize => "111"


Si solo quería caracteres ASCII, puede usar:

original = "aøbauhrhræoeuacå" cleaned = "" original.each_byte { |x| cleaned << x unless x > 127 } cleaned # => "abauhrhroeuac"


Una forma más fácil de hacerlo inspirada por la respuesta de Can Berk Güder es:

Para eliminar caracteres especiales:

input = input.gsub(//W/, '''')

Para mantener los caracteres de las palabras:

input = input.scan(//w/)

¡Al final la entrada es la misma! Pruébalo: http://rubular.com/