回答
正則表達式是用gsub去的方法。喜歡的東西:
existingString.gsub(/\{(.*?)\}/) { "her" }
您可以隨時使用的.index:
a = 'I love {bill gates}'
a[a.index('{')+1..a.index('}')-1]
最後一行只是說獲得「A」由右後「{」第一次出現前右中第一次出現'}'。然而,需要注意的是,這隻會在{}的第一次出現之間得到文本。所以它會適用於你的上面的例子。
我會使用索引來在{}之間添加新內容。
這看起來是這樣的:
a[0..a.index('{')] + 'Steve Jobs' + a[a.index('}')..-1]
同樣,這只是作品的「{」和「}」中第一次出現。
邁克爾G.
replacements = {
'you' => 'her',
'angels' => 'demons',
'ice cream' => 'puppies',
}
my_string = "I love {you}.\nYour voice is like {angels} singing.\nI would love to eat {ice cream} with you sometime!"
replacements.each do |source, replacement|
my_string.gsub! "{#{source}}", replacement
end
puts my_string
# => I love her.
# => Your voice is like demons singing.
# => I would love to eat puppies with you sometime!
爲什麼不使用一些模板引擎,如:https://github.com/defunkt/mustache
注意,紅寶石能爲%{}
做到這一點:
"foo = %{foo}" % { :foo => 'bar' }
#=> "foo = bar"
,最後不要忘記檢查現有的ruby template engines - 不要重新發明輪子!
OP想要獲取花括號之間的內容並可以選擇更改它。這與OP的問題中的模板有什麼關係? – 2012-08-14 03:00:00
稱它爲你想要的但是這是一個模板=> http://en.wikipedia.org/wiki/Template – mpapis 2012-08-14 05:01:42
簡單的方式來獲得從{...}
的裏面的內容是:
str = 'I love {you}'
str[/{(.+)}/, 1] # => "you"
,基本上說,「搶龍頭{
至一個後}
內一切這不是真正的成熟,可以被愚弄。通過
更換目標字符串嵌套{}
對可以做不同的方式:
replace_str = 'her'
'I love {you}'.sub('you', replace_str) # => "I love {her}"
簡單的sub
將用替換文本替換第一次出現的目標字符串。
你可以使用正則表達式而不是字符串:
'I love you {you}'.sub(/you/, replace_str) # => "I love her {you}"
如果有目標字符串的多次出現,然後用更多的文字來找到它。這使用包裝分隔符來定位它,然後再替換它們。還有其他的方法可以做到這一點,但我不喜歡它:
'I love you {you}'.sub(/{.+}/, "{#{ replace_str }}") # => "I love you {her}"
亞歷克斯·韋恩的回答差點,但沒有去一路:Ruby的gsub
有一個非常好的功能,您可以通過它正則表達式和哈希,它將替換在哈希值的正則表達式匹配的所有事件:
hash = {
'I' => 'She',
'love' => 'loves',
'you' => 'me'
}
str.gsub(Regexp.union(hash.keys), hash) # => "She loves {me}"
當你想採取一個模板,並迅速取代所有的佔位符嗎?那真的很強大。
- 1. 如何使用Regex獲取2括號之間的內容?
- 2. 在兩條線上的括號之間獲取內容
- 3. 獲取大括號之間的值c#
- 4. 獲取括號內
- 5. PYTHON - 捕獲大括號內的內容
- 6. PHP獲取JavaScript數組中的逗號之間的內容
- 7. 獲取html標記之間的內容
- 8. 獲取<! - 和// - >之間的內容
- 9. 獲取標籤之間的內容
- 10. Php/Regex獲取一組雙引號之間的內容
- 11. 獲取文本括號內
- 12. 獲取話括號內
- 13. 刪除PHP中的圓括號之間的所有內容?
- 14. 從最內括號中提取內容?
- 15. Coldfusion正則表達式獲取括號內的所有內容
- 16. 正則表達式用於匹配括號之間的內容
- 17. 如何匹配第一組括號之間的所有內容?
- 18. 刪除兩個方括號之間的所有內容
- 19. PHP替換大括號之間的所有內容?
- 20. 提取每一級括號的內容
- 21. 在短代碼之間獲取內容
- 22. 正則表達式提取unix中大括號之間的所有內容
- 23. 簡單的正則表達式來提取方括號之間內容jQuery中
- 24. 匹配方括號內的內容,包括嵌套方括號
- 25. 蟒替換內容尖括號之間(<>)
- 26. 只取數字括號內(括號內)
- 27. 刪除內容括號內
- 28. 如何獲取任意數目的括號之間的文本?
- 29. reg從括號中提取內容
- 30. ( - 開大括號和之間)提取文本 - 右大括號
這是唯一的通用解決方案。 +1! – Linuxios 2012-08-14 00:31:03