我想將字符串轉換:如何引用紅寶石正則表達式
"{john:123456}"
到:
"<script src='https://gist.github.com/john/123456.js'>"
我寫了一個可行的方法,但它是非常愚蠢的。它是這樣的:
def convert
args = []
self.scan(/{([a-zA-Z0-9\-_]+):(\d+)}/) {|x| args << x}
args.each do |pair|
name = pair[0]
id = pair[1]
self.gsub!("{" + name + ":" + id + "}", "<script src='https://gist.github.com/#{name}/#{id}.js'></script>")
end
self
end
有沒有辦法做到這一點,就像下面的cool_method
?
"{john:123}".cool_method(/{([a-zA-Z0-9\-_]+):(\d+)}/, "<script src='https://gist.github.com/$1/$2.js'></script>")
如果這是從某處來的JSON,我只使用JSON。雖然正則表達式的解決方案「很好」,但我仍然會考慮將分割和索引所產生的值。 – 2013-05-06 13:50:32
+1 @DaveNewton。傳入的數據字符串是JSON,因此第一步是將其重新轉換爲其對象形式,然後對其進行按摩。用正則表達式解析JSON可能會造成嚴重的後果。在散列或數組中進行按摩是不太可能發生的。 – 2013-05-06 15:41:04
是否總是隻有一個名稱/值,或者可以接收多個條目?而且,是字符串'「{john:123456}」,還是真的是'{「john」:123456}'? – 2013-05-06 15:51:25