2011-12-10 204 views
2

这让我疯狂。我基本上试图检查,如果saved_category_parent匹配parsed_category_parent如何打印没有括号或引号的数组元素?

它说saved_category_parent属于类Array,而parsed_category_parent(刮与nokogiri)说,它的一个字符串。

所以,当我尝试检查,因为它比较第一[“第一”]

我只需要删除愚蠢括号它始终返回false以下。我试图让它变得更糟......它增加了更多的括号和更多的括号。

if saved_category_parent == parsed_category_parent && saved_category == parsed_category 
    //code 
end 

我的继承人其他代码

categories = ["#first > sub-cat", "#second > sub-cat-2"] 

# Parse through saved categories and break them up 

categories.each do |category| 
    saved_category_parent = category.scan(/#([^ ]*)/)[0] 
    saved_category  = category.scan(/.* > (.*)$/)[0] 

    @rss = Nokogiri::HTML(open(open(link.get_attribute('href')))) 

    @rss.css('.col').each do |forumblock| 
    parsed_category_parent = forumblock.css('h4 a').inner_text 
    forumblock.css('li a').each do |forumlink| 
     parsed_category = forumlink.content 

     # p saved_category_parent 
     # p parsed_category_parent 
     # p saved_category 
     # p parsed_category 

     p saved_category_parent 
     p saved_category 



    end 
    end 
end 

回答

1

如果你的数组只有一个元素,你可以做这样的:

# creating the values manually for the example 
parsed_category_parent = "first" 
saved_category_parent = ["first"] 

# solution 
parsed_category_parent = saved_category_parent[0] 

你可以在IRB中试试看它是否有效。

通过使用[]操作者正在访问它是一个字符串数组的第一个元素,从而比较两个串在一起,而不是比较包含字符串的数组的字符串。

您也可以使用访问数组中的元素,如“第一”的其他方法。

+0

关闭我想。当我把“p saved_category [0]”仍然说[“sub-cat”] ...但是当我使用“puts saved_category”时,它工作正常(它只是说没有引号的“sub-cat”)。我已经用.first和[0]尝试了这两种方法,它仍然不会像字符串一样返回。也许我的如果是错误的,但?说 “你好”,如果saved_category_parent [0] == parsed_category_parent && saved_category [0] == parsed_category – Tallboy

+0

现在,我想它似乎 '扫描' 是错误的。我不希望它成为一个新的数组,我只是想要一个简单的字符串扫描 – Tallboy

+0

@Tallboy的结果是:如果你做p saved_category_parent未经[0],你应该得到[“第一”],而p saved_category_parent [0]应该给你“第一”。 – Gilles

0

使用Array#first得到数组的第一个(或唯一的)元素:

irb> ["first"].first 
    => "first" 
相关问题