2011-12-10 193 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" 
相關問題