Próbowałem użyć gsub
, aby usunąć znaki nie będące słowami w łańcuchu w aplikacji szyny. Użyłem poniższy kod:Dziwactwo z gsubem
somestring.gsub(/[\W]/i, '') #=> ""
ale jest nieprawidłowe, usunie nas k
również. Prawidłowe jeden powinien być:
somestring.gsub(/\W/i, '') #=> "kkk"
Ale moim problemem jest to, że test jednostka kontroler szyny, która zawiera powyższy kod korzystając rspec nie działa, test jednostka faktycznie przechodzi. Stworzyłem więc dość ekstremalny przypadek testowy w rspecu, aby powyższy przypadek testowy się nie powiódł, ale faktycznie minął. Jaki jest tutaj problem? Dlaczego test miałby przejść?
Dlaczego test zakończy się niepowodzeniem? '/ [\ W]/i' to całkowicie poprawne wyrażenie regularne dla tego zadania, o ile widzę. Wsporniki są w tym przypadku niepotrzebne, ale nic nie szkodzi. –
Czy rzeczywiście próbowałeś swoich wyrażeń regularnych w 'irb'? '" kkk ".gsub (..)' działa tak jak powinien, a wynikiem jest "kkk", więc test przechodzi. Jaki jest wynik, którego się spodziewasz? – Casper
@Casper Właściwie, podczas uruchamiania '' kkk'.gsub (/ [\ W]/i, '') otrzymuję '" "'. Dla porównania uruchamianie '' kkk'.gsub (/ \ W/i, '') 'zwraca' 'kkk''. –