2015-02-11 189 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