我们可以获得与格式相关的字符串中的插槽吗?

时间:2018-02-27 16:44:54

标签: ruby string

我有兴趣获取与运营商%格式化相关的字符串中的广告位列表。假设我有一个slots方法,它会执行以下操作:

t = '... %{s1} ... %{s2} ... %{s3} ...'
t.slots # => ['s1', 's2', 's3']
  1. 是否有假设的slots
  2. 这样的方法
  3. 有没有办法让这些插槽不使用正则表达式,但是使用与Ruby引擎使用的相同的解析例程?
  4. 是否有一个库实现类似于格式插值的方式,它公开了一种类似于上述slots的方法?
  5. 如果没有其他选项,我怎么能为这种情况制作一个下降解析器(不是正则表达式)?
  6. 我看了what I think is the source code of %,我担心字符串格式化对于广告位检测没有明显的分离。

1 个答案:

答案 0 :(得分:1)

至少,你可以这样做:

t = '... %{s1} ... %{s2} ... %{s3} ...'

h = {}
begin
  t % h
rescue KeyError => e
  h[e.key] = true
  retry
end
h.keys # => [:s1, :s2, :s3]