gpt4 book ai didi

ruby-on-rails - 替换 Ruby 中的特定元素

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:23 26 4
gpt4 key购买 nike

假设我有一个 ruby​​ 数组,例如:

arr = ['M','X','C','Y','C']

如何用 '1' 替换值 'M''Y' 的元素

并将 'X' 替换为 '2'

最后 'C''5'

所以最后我的数组被转换为:

['1','2','5','1','5']

我知道我尝试了几种方法,例如 case-loop:

arr.map { |i| case i 
when ['X'].include? i then '2'
when ['M','Y'].include? i then '1'
when ['C'].include? i then '5'
end }

但这不知何故给了我这个错误:

syntax error, unexpected keyword_end, expecting '}'
... end }

我做错了什么或者我可以用什么代替?

最佳答案

使用哈希和 Array#map! :

mapping = {'M' => '1', 'Y' => '1', 'X' => '2', 'C' => '5'}
arr = ['M','X','C','Y','C']
arr.map! { |c| mapping[c] }
# => ["1", "2", "5", "1", "5"]

更新

正如 Stefan 所建议的,您还可以使用 Hash#values_at :

arr = ['M','X','C','Y','C']
mapping = {'M' => '1', 'Y' => '1', 'X' => '2', 'C' => '5'}
mapping.values_at(*arr)
# => ["1", "2", "5", "1", "5"]

关于ruby-on-rails - 替换 Ruby 中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24076132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com