2014-01-22 70 views
0

與數據散列陣列I有如下所示的字符串:分裂串入上定界符

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(/<[^>]>/) 

但它返回只返回片段的陣列。

+2

你爲什麼不嘗試使用HTML解析器像[引入nokogiri(http://nokogiri.org)? – toro2k

回答

0

我會做使用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."] 
+0

是不是使用nokogiri解析字符串矯枉過正? – kabukiman

+2

@ kabukiman *不*它不是。建議使用Nokogiri解析HTML/XML。 –

+0

感謝您的回答,非常有幫助 – kabukiman