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

我有兴趣通过运算符%获取与格式化相关的字符串中的插槽列表.假设我有一个插槽方法,它将执行以下操作:

t = '... %{s1} ... %{s2} ... %{s3} ...'
t.slots # => ['s1', 's2', 's3']

>有没有假设的插槽这样的方法?
>有没有办法获得这些插槽而不使用正则表达式,但使用与Ruby引擎使用的相同的解析例程?
>是否有一个库实现类似于格式插值的东西,它暴露出类似于上述插槽的方法?
>如果没有其他选项,我怎么能为这种情况产生一个下降解析器(不是正则表达式)?

我读了what I think is the source code of %,我担心字符串格式化对于插槽检测没有明显的分离.

最佳答案 至少,你可以这样做:

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

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