字符串格式的工作原理如下:
someString = "Example string %{key}"
result = someString % {key: newData}
我想在不对其进行硬编码的情况下检索字符串中的哈希键。有没有办法做到这一点?
另外,有没有办法使用变量构造格式字符串?我想做这样的事情:
variable = key
result = someString % {variable: newData}
答案 0 :(得分:2)
从格式字符串中提取密钥的一种方法:
"Example string %{key1} %{key2}".scan /(?<=%{)[^{}]+?(?=})/
# => ["key1", "key2"]
正则表达式(?<=%{)[^{}]+?(?=})
匹配一个或多个字符(非贪婪),前提是%{
后跟}
。
要构造格式字符串,可以使用字符串插值:
variable = 'key'
"Example string %{#{variable}}"
# => "Example string %{key}"
答案 1 :(得分:2)
你几乎得到了它。只需稍微用语法
variable = :key # get this one from whereever
someString = "Example string %{key}"
someString % { variable => 'foo' } # => "Example string foo"