【问题标题】:split string into array of hashes with data on delimeter将字符串拆分为带有分隔符上的数据的哈希数组
【发布时间】:2014-01-22 13:19:11
【问题描述】:

我有如下字符串:

lorep ipsum <a href="#" class="link-1">dolor sit</a>amet, consectetur <a href="#" class="link-2">adipiscing</a> elit.

我需要将其拆分为片段,但将片段的链接类保存在锚点内。所以完美的结果是:

['lorep ipsum ', {'link-1' => 'dolor sit'}, 'amet, consectetur', {'link-2' => 'adipiscing'}, ' elit.']<br />

或者:

['lorep ipsum ', ['link-1', 'dolor sit'], 'amet, consectetur', ['link-2', 'adipiscing'], ' elit.']

我已尝试使用此代码:

string.split(/<[^>]>/)

但它返回的只是一个片段数组。

【问题讨论】:

  • 你为什么不尝试使用像Nokogiri这样的HTML解析器?

标签: html ruby string


【解决方案1】:

我会使用Nokogiri

require 'nokogiri'

doc = Nokogiri::HTML.parse <<-eot
lorep ipsum <a href="#" class="link-1">dolor sit</a>amet, consectetur <a href="#" class="link-2">adipiscing</a> elit.
eot

ary = doc.search("//a").flat_map do |n,a|
   [n.previous_sibling.text.strip,{n['class'] => n.text.strip},n.next_sibling.text.strip]
end.uniq

p ary

输出

["lorep ipsum", {"link-1"=>"dolor sit"}, "amet, consectetur", {"link-2"=>"adipis
cing"}, "elit."]

【讨论】:

  • 使用 nokogiri 解析字符串是不是有点矫枉过正?
  • @kabukiman NO 不是。推荐使用 Nokogiri 解析 HTML/XML。
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多