Bug #12851
Updated by ciscoved (Mikhail A) over 7 years ago
Hi! Found this strange issue with gsub! and downcase! methods used together for a string. Example code: ~~~ ruby def palindrome? (str) str.gsub!(/\W/, '').downcase! str == str.reverse end puts palindrome?("Madam, I'm Adam!") ~~~ **returns true.** Ok! But...! if the given string is single word: ~~~ ruby def palindrome? (str) str.gsub!(/\W/, '').downcase! str == str.reverse end puts palindrome?("aBba") palindrome?("abba") ~~~ it returns no method error. hw1_string.rb:13:in `palindrome?': undefined method `downcase!' for nil:NilClass (NoMethodError) from hw1_string.rb:30:in `<main>' If the code is refactored like this: ~~~ ruby def palindrome? (str) str.gsub!(/\W/, '') str.downcase! str == str.reverse end puts palindrome?("abba") puts palindrome?("Madam, I'm Adam!") ~~~ than it worked ok in **both** cases. Why? I'm new to ruby, and, may be still misunderstood something, but seems that is really a bug.