【问题标题】:Output value is array in ruby输出值是 ruby​​ 中的数组
【发布时间】:2015-04-11 17:13:07
【问题描述】:

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

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>

然后我想要单独的行中的所有 (.*?) 标记

这样

 Welcome to select
 hi
 bye

【问题讨论】:

  • &lt;ui&gt; - 这是一个错字吗?

标签: ruby regex pattern-matching match


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您希望在单独的行中输出,那么您可以使用 ruby​​ 数组的 flatten 方法,然后循环通过它以在单独的行中打印它们。 Flatten 将数组数组转换为一维数组。

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

    输出:

    Welcome to select
    hi
    bye
    

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多