2015-02-11 182 views
0

此程序輸出應該是一個字符串,但它是陣列輸出值是在紅寶石陣列

hi = "<ui><li>Welcome to select</li><li>hi</li><li>bye</li></ul>" 

i = hi.scan(/<ui>(.*?)<\/ul/) 
puts i 

輸出

[["<li>Welcome to select</li><li>hi</li><li>bye</li>"]] 

但我想是這樣

<li>Welcome to select</li><li>hi</li><li>bye</li> 

然後輸出I想要所有的< \ li>(。*?)</li>標籤在單獨行

喜歡這個

Welcome to select 
hi 
bye 
+0

'' - 這是一個錯字? – Stefan 2015-02-11 11:12:13

回答

3

您應該使用Nokogiri解析HTML:

require 'nokogiri' 

hi = '<ul><li>Welcome to select</li><li>hi</li><li>bye</li></ul>' 

Nokogiri::HTML.fragment(hi).css('ul li').each do |li| 
    puts li.text 
end 

輸出:

Welcome to select 
hi 
bye 
0

如果您想在不同的線路輸出,那麼你可以使用紅寶石數組的flatten方法,然後循環遍歷它們以單獨的行打印它們。 Flatten將數組數組轉換爲單維數組。

hi.scan(/<li>(.*?)<\/li>/).flatten.each {|x| puts x} 

輸出:

Welcome to select 
hi 
bye