-1

我正在尝试清理所有非单词字符的字符串,将其设为小写,然后比较string.reversestring本身。

def palindrome?
  if self.reverse.gsub(/\W/, "").downcase == self
    return true
  end
end

为什么我会收到以下错误?我应该如何处理downcase方法?

NameError: main:Object 的未定义局部变量或方法“downcase”

4

1 回答 1

0

downcaseString在s上定义。尝试:

 class String
   def palindrome?
     if self.reverse.gsub(/\W/, "").downcase == self
       true
     else
       false
     end
    end
  end

"radar".palindrome?  # => true
"hi".palindrome?  # => false

但是,请注意,像猴子补丁这样的知名课程String可能会完全咬住你。代替上述方法,您可以创建一个String提供该palindrome?方法的子类。

于 2013-10-16T18:33:43.847 回答