输出值为 ruby 中的数组

Output value is array in ruby

这个程序输出应该是一个字符串,但它是数组

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>

然后我希望所有 <\li>(.*?) 标签在单独的行中

像这样

 Welcome to select
 hi
 bye

您应该使用 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

如果你想在单独的行中输出,那么你可以使用ruby数组的flatten方法,然后遍历它以在单独的行中打印它们。 Flatten 将数组的数组转换为一维数组。

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

输出:

Welcome to select
hi
bye