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

标签 ruby string

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

t = '... %{s1} ... %{s2} ... %{s3} ...'
t.slots # => ['s1', 's2', 's3']
  1. 有没有像假设的slots这样的方法?
  2. 有没有办法不使用正则表达式,而是使用与 Ruby 引擎使用的相同的解析例程来获取这些插槽?
  3. 是否有一个库可以实现格式插值之类的东西,公开类​​似于提到的 slots 的方法?
  4. 如果没有任何其他选择,我如何为这种情况生成下降解析器(不是正则表达式)?

我读了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/

相关文章:

java - 为什么第一个字符不是大写?

ruby - 信号发送到哪个调用系统的进程在哪里?

ruby-on-rails - Ruby on Rails : If you have 50 if-else statements in your after_create action, 会减慢您的应用程序吗?

ruby - 如何删除 Ubuntu 库存 Ruby 1.8?不恰当

java - 只让用户输入正整数(不能输入小数或字符串)?

python - str.__getslice__ 没有按预期工作,负停止

ruby-on-rails - 使用 EBC 的架构的实际示例?

ruby - 存储 Ruby 对象的集合

C++程序在退出时崩溃,内存中的访问冲突

php - 如何在多个文本字符串中使用数组或 in_array 进行 strpos