Project

General

Profile

Actions

Bug #12851

closed

string.gsub!(/\W/, '').downcase! returns undefined method in some (listed) cases

Added by ciscoved (Mikhail A) over 7 years ago. Updated over 7 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
[ruby-core:77662]

Description

Hi! Found this strange issue with gsub! and downcase! methods used together for a string. Example code:

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:

def palindrome? (str)
  str.gsub!(/\W/, '').downcase!
  str == str.reverse
end

puts 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 `'

If the code is refactored like this:

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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0