Я пытался использовать gsub
для удаления символов без слов в строке в приложении rails. Я использовал следующий код:Weirdness with gsub
somestring.gsub(/[\W]/i, '') #=> ""
, но это на самом деле неправильно, это удалит письмо k
, а также. Правильный один должен быть:
somestring.gsub(/\W/i, '') #=> "kkk"
Но моя проблема заключается в том, что тестовый модуль контроллера рельсов, который содержит приведенный выше код с помощью RSpec не работает, тест устройства на самом деле проходит. Так что я создал довольно экстремальный тест, в RSpec
it "test this gsub" do
'kkk'.gsub(/[\W]/i, '').should == 'kkk'
end
выше тест должен потерпеть неудачу, но он на самом деле проходит. В чем проблема? Зачем проходить тест?
Почему тест не прошел? '/ [\ W]/i' является полностью допустимым регулярным выражением для этой задачи, насколько я могу видеть. В этом случае скобки не нужны, но ничего не повредит. –
Вы действительно пытались использовать регулярные выражения в 'irb'? '' kkk ".gsub (..)' работает так, как должно, и результатом является «kkk», поэтому тест проходит. Каков результат, которого вы ожидаете? – Casper
@Casper На самом деле, при запуске '' kkk'.gsub (/ [\ W]/i, '') 'I get' "" '. Для сравнения, запуск '' kkk'.gsub (/ \ W/i, '') 'возвращает' 'kkk" '. –