Ruby 例外情况:无can';在比较两个字符串时,不能强制使用Fixnum

Ruby 例外情况:无can';在比较两个字符串时,不能强制使用Fixnum,ruby,Ruby,简单的红宝石问题,但它让我发疯。我有一个方法比较两个字符串,如果字符串一包含字符串二,则返回1。该方法位于一个模块中 代码如下: def self.check_similarity first_string, second_string first_string.gsub!(/\s+/, "") first_string.downcase! second_string.gsub!(/\s+/, "") second_string.downcase! i

简单的红宝石问题,但它让我发疯。我有一个方法比较两个字符串,如果字符串一包含字符串二,则返回1。该方法位于一个模块中

代码如下:

  def self.check_similarity first_string, second_string
    first_string.gsub!(/\s+/, "")
    first_string.downcase!
    second_string.gsub!(/\s+/, "")
    second_string.downcase!
    if first_string.include? second_string
      return 1
    end
  end
在调试过程中,当我到达
if
行时,我得到
nil不能强制为比较两个字符串的Fixnum。我调试并打印了字符串的类,它们从不为零或与字符串有任何不同。有什么想法吗


更新:我对该方法进行了单元测试,它按预期工作。问题一定来自其他地方,因此我将继续检查代码。

如果gsub!不进行替换,则返回nil。看


请确保不要在if子句中使用nil,但因为我没有将第一个字符串赋给任何对象,所以应该没有问题,对吧?~$irb ruby-1.9.2-p290:001>first_string=“hola”=>“hola”ruby-1.9.2-p290:002>first_string.gsub!(/\s/,“”)=>nil-ruby-1.9.2-p290:003>将字符串放在第一位hola=>nil-ruby-1.9.2-p290:004>尝试了你的方法,它对我有效。我认为这个方法之外还有一个问题。你确定第一个字符串和第二个字符串永远不会为零吗?我接受答案,因为代码确实有效,所以这个问题有点无效。在做了一些nil检查并添加了单元测试之后,一切都很好。这非常好,我看到的唯一问题是该方法将:返回nil,除非第一个字符串包含?第二串
ruby-1.9.2-p136 :001 > first_string = "nospaces"
 => "nospaces" 
ruby-1.9.2-p136 :002 > first_string.gsub!(/\s+/, "")
 => nil