【问题标题】:Ruby post match returning Nil.. like its supposed too橄榄球赛后返回零..就像它应该
【发布时间】:2015-08-16 20:11:10
【问题描述】:

我的 while 循环不知何故被破坏了。我收到这个错误:

`block in scrape': undefined method `post_match' for nil
:NilClass   (NoMethodError)

它在遍历字符串后也像预期的那样返回 nil,并且它也像预期的那样填充数组,但是最后一次碰到 .post_match 它失败了,因为它是 nil .. 但它应该是 nil .. 不知道该怎么办??我希望它只填充数组,然后在 parent_pic_first 为 nil 时退出循环。

parent_pic_first = /\"hiRes\":\"/.match(pic).post_match

   while parent_pic_first != nil

        parent_pic = URI.extract(parent_pic_first, ['http'])

        pic_list = []

        pic_list.push(parent_pic[0])

        parent_pic_first = /\"hiRes\":\"/.match(parent_pic_first).post_match

        end

【问题讨论】:

  • 介意给出确切的错误吗?作为快速检查,当您将 != nil 替换为 parent_pic_first.nil? 时会发生什么
  • 用错误更新帖子.. 但是 parent_pic_first.nil?不是我真正想要的.. 因为如果它是 nil 而我使用了 parent_pic_first.nil?这将是真的.. 我希望它是假的.. 基本上!.nil?如果有这样的事情?
  • 是的,实际上是!parent_pic_first.nil? IIRC。已经有一段时间了。

标签: ruby-on-rails ruby string while-loop


【解决方案1】:

错误不是parent_pic_firstnil,而是/\"hiRes\":\"/.match(parent_pic_first)nil。您正在尝试在 nil 值上调用方法 post_matchnil.post_match 显然是行不通的。

您需要添加一些检查以防止在 nil 上调用 post_match,因此如下所示:

parent_pic_first = /\"hiRes\":\"/.match(pic).post_match

while parent_pic_first != nil
  parent_pic = URI.extract(parent_pic_first, ['http'])
  pic_list = []
  pic_list.push(parent_pic[0])
  regex_return = /\"hiRes\":\"/.match(parent_pic_first)
  if regex_return.nil?
    break
  else      
    parent_pic_first = regex_return.post_match
  end
end

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2021-09-22
    • 2023-04-04
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多