我有兴趣获取与操作符 %
格式化相关的字符串中的槽列表。假设我有一个 slots
方法,它将执行以下操作:
t = '... %{s1} ... %{s2} ... %{s3} ...'
t.slots # => ['s1', 's2', 's3']
- 有没有像假设的
slots
这样的方法? - 有没有办法不使用正则表达式,而是使用与 Ruby 引擎使用的相同的解析例程来获取这些插槽?
- 是否有一个库可以实现格式插值之类的东西,公开类似于提到的
slots
的方法? - 如果没有任何其他选择,我如何为这种情况生成下降解析器(不是正则表达式)?
我读了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]
关于ruby - 我们可以获取与格式化相关的字符串中的插槽吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013761/