Stavo cercando di utilizzare gsub
per rimuovere i caratteri non di una stringa in un'app di rotaia. Ho usato il seguente codice:Strangie con gsub
somestring.gsub(/[\W]/i, '') #=> ""
ma in realtà è errata, rimuoverà lettera k
pure. Il corretto dovrebbe essere:
somestring.gsub(/\W/i, '') #=> "kkk"
Ma il mio problema è che l'unit test di un controller rotaie che contiene il codice di cui sopra utilizzando rspec non funziona, il test di unità in realtà passa. Così ho creato un banco di prova abbastanza estremo in rspec
it "test this gsub" do
'kkk'.gsub(/[\W]/i, '').should == 'kkk'
end
il banco di prova di cui sopra dovrebbe fallire, ma passa in realtà. Qual è il problema qui? Perché il test dovrebbe passare?
Perché il test fallisce? '/ [\ W]/i' è un'espressione regolare valida per quel compito, per quanto posso vedere. In questo caso, le staffe non sono necessarie, ma non danneggia nulla. –
Hai effettivamente provato le tue espressioni regolari in 'irb'? '" kkk ".gsub (..)' funziona come dovrebbe, e il risultato è "kkk", quindi il test passa. Qual è il risultato che ti aspetti? – Casper
@Casper In realtà, quando si esegue ''kkk'.gsub (/ [\ W]/i,' ')' Ottengo '" "' '. In confronto, l'esecuzione di ''kkk'.gsub (/ \ W/i,' ')' restituisce '" kkk "'. –