гсуб! чистая строка, без апострофа

Попытка удалить апостроф в строке. Используя приведенный ниже код, я удалил апостроф и пробелы, может ли кто-нибудь помочь мне исправить это, поэтому я просто удаляю апостроф?

def clean_uniname(text)
 return text.gsub!(/\s|"|'/, '')
end

person Akamaru    schedule 22.06.2016    source источник
comment
Апостроф и одинарные кавычки используют один и тот же символ, но имеют разные значения. Предположим, ваша строка была "She said, 'I don't know'". Вы хотите получить "She said, 'I dont know'" (удаление только апострофа) или "She said, I dont know" (удаление символа "'") или что-то еще? Если это первое, то это немного сложно, потому что некоторые слова имеют апостроф после последнего символа (бро', или притяжательная форма для слов, оканчивающихся на s, например, автомобиль Криса), а некоторые слова имеют несколько апострофов (не может уве).   -  person Cary Swoveland    schedule 22.06.2016


Ответы (2)


\s означает «пробельный символ», а " представляет собой кавычку. Если вы не хотите, чтобы они были в вашем регулярном выражении, потяните их. Для отладки попробуйте Rubular для тестирования.

Это означает, что ваш код должен быть:

def clean_uniname(text)
  text.gsub!(/\s|"|'/, '')

  text
end

Стоит отметить, что gsub! возвращает nil, если не было внесено никаких изменений, поэтому здесь требуется явный возврат text, если вы используете возвращаемое значение.

person tadman    schedule 22.06.2016

Это должно помочь:

    def clean_uniname(text)
     text.gsub!("'", '')
    end
person ruby_newbie    schedule 22.06.2016
comment
попробовал и получил эту ошибку: testing.rb:41:in block in process_unis': undefined method []' for nil:NilClass (NoMethodError) - person Akamaru; 22.06.2016
comment
Эта ошибка не связана с упомянутой вами проблемой, как вы можете видеть ниже: 2.2.1 :001 › string = I’m a string =› I’m a string 2.2.1 :002 › string.gsub!(', ' ') => Im a string 2.2.1 :003 › Если вы опубликуете больше кода, я могу помочь вам с другой проблемой, но вам может быть лучше открыть новую проблему и отметить мой ответ для этой проблемы, так как мой ответ решает вопрос, который вы спросил. - person ruby_newbie; 22.06.2016