Estaba tratando de usar gsub
para eliminar caracteres que no sean palabras en una cadena en una aplicación de rieles. He utilizado el siguiente código:Weirdness con gsub
somestring.gsub(/[\W]/i, '') #=> ""
pero en realidad es incorrecta, se eliminará carta k
también. La correcta debería ser:
somestring.gsub(/\W/i, '') #=> "kkk"
Pero mi problema es que la prueba unitaria de un controlador de rieles que contiene el código anterior utilizando rspec no funciona, la prueba de la unidad pasa en realidad. Así que creé un caso de prueba bastante extremo en rspec
it "test this gsub" do
'kkk'.gsub(/[\W]/i, '').should == 'kkk'
end
el caso de prueba anterior falla, pero en realidad pasa. ¿Cuál es el problema aquí? ¿Por qué pasaría la prueba?
¿Por qué fallaría la prueba? '/ [\ W]/i' es una expresión regular completamente válida para esa tarea, hasta donde puedo ver. Los corchetes son innecesarios en ese caso, pero no duele nada. –
¿De verdad probaste tus expresiones regulares en 'irb'? '" kkk ".gsub (..)' funciona como debería y el resultado es "kkk", por lo que la prueba pasa. ¿Cuál es el resultado que estás esperando? – Casper
@Casper En realidad, cuando ejecuto ''kkk.gsub (/ [\ W]/i, '')' obtengo '" "'. En comparación, ejecutando ''kkk.gsub (/ \ W/i, '')' devuelve '" kkk "'. –