回答
正则表达式是用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