我有一个数组存储在这样的常量中:
FIELDS = ["first_name", "last_name", "occupation"]
我只需要删除方括号,它看起来像这样:
"first_name", "last_name", "occupation"
有人有什么想法吗?
谢谢。 :-)
了解更多背景信息:
我有一个复杂的哈希,我需要从中获取特定的值。我的想法是将每个值的键存储为数组,这样我就可以这样
hash.values_at("first_name", "last_name", "occupation")
但这不适用于数组中的方括号,因此我的问题!
但是,我可能会以错误的方式解决这个问题!
编辑:现在您已经为您的问题添加了一些上下文,我发现您想做一些完全不同的事情。
以下是如何迭代(循环)密钥哈希列表以获取它们的值:
EXAMPLE_HASH = { 'first_name' => 'Jane', 'last_name' => 'Doe', 'occupation' => 'Developer', 'other_key' => 'Dont return this' }.freeze
FIELDS = ['first_name', 'last_name', 'occupation'].freeze # Actually keys.
results = FIELDS.map{ |key|
EXAMPLE_HASH[key]
}
=> ["Jane", "Doe", "Developer"]
或更简洁地说:
EXAMPLE_HASH = { 'first_name' => 'Jane', 'last_name' => 'Doe', 'occupation' => 'Developer', 'other_key' => 'Dont return this' }.freeze
FIELDS = ['first_name', 'last_name', 'occupation'].freeze # Actually keys.
results = EXAMPLE_HASH.values_at(*FIELDS)
=> ["Jane", "Doe", "Developer"]
这是一件非常奇怪的事情,因为实际上数组实际上没有那些方括号,这只是数组打印出来的方式,让观察者知道它是任何数组。 因此,您实际上无法从数组中“删除”这些方括号,因为它们一开始就不存在。 您可以覆盖 Array 类上的
to_s
(和 inspect
?)方法,以便以不同的方式打印出来。
但假设您想要一个字符串作为输出,这将完成任务:
FILEDS = ["first_name", "last_name", "occupation"]
fields_as_string = "\"#{FILEDS.join('", "')}\""
=> "\"first_name\", \"last_name\", \"occupation\""
但是,尚不清楚您是否想要一个字符串作为输出,也不清楚您是否对字符串中的双引号转义感到满意。