如何从数组中(仅)删除方括号? [重复]

问题描述 投票:0回答:2

我有一个数组存储在这样的常量中:

FIELDS = ["first_name", "last_name", "occupation"]

我只需要删除方括号,它看起来像这样:

"first_name", "last_name", "occupation"

有人有什么想法吗?

谢谢。 :-)

了解更多背景信息:

我有一个复杂的哈希,我需要从中获取特定的值。我的想法是将每个值的键存储为数组,这样我就可以这样

hash.values_at("first_name", "last_name", "occupation")

但这不适用于数组中的方括号,因此我的问题!

但是,我可能会以错误的方式解决这个问题!

arrays ruby-on-rails ruby sorting
2个回答
5
投票
hash.values_at(*FIELDS)

星号称为

splat
运算符。 文档


0
投票

编辑:现在您已经为您的问题添加了一些上下文,我发现您想做一些完全不同的事情。

以下是如何迭代(循环)密钥哈希列表以获取它们的值:

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\""

但是,尚不清楚您是否想要一个字符串作为输出,也不清楚您是否对字符串中的双引号转义感到满意。

© www.soinside.com 2019 - 2024. All rights reserved.