红宝石 - 如果在数组元素中含有一定字符,返回相关的元件(一个或多个)

问题描述 投票:1回答:3

例:

my_array = ['2823BII','4A','76B','10J']

[使用方法神奇delete_if_doesnt_contain()]

my_array.map! do |elements|
    elements.delete_if_doesnt_contain('A')
end

我希望这样的设置my_array = ['4A']

即使我能遍历数组,只是返回一个包含该元素的索引“A”我会很高兴。谢谢你的帮助!

感谢下面的答案,但一个问题。

other_array = ['4']
my_var = other_array.to_s
my_array.select!{|x| x.include?(my_var)}

这不是为我工作。我在想什么?事情发生时,我转换的阵列为一个字符串?

ruby arrays character contains elements
3个回答
5
投票

非常容易使用#select

my_array = ['2823BII','4A','76B','10J']
my_array.select { |str| str.include?('A') }
# => ["4A"]

或者,如果你想修改源阵列,使用该bang version of select: -

my_array.select! { |str| str.include?('A') }

0
投票

奥雅纳的答案是正确的。

然而,具体回答你的最后一个问题,“遍历数组,只是返回一个包含‘A’的元素的索引”中,“指数”方法返回一个匹配元素的索引:

my_array.index {|x| x.include?('A') }

0
投票

grep方法是短了很多

my_array = ['2823BII','4A','76B','10J']
my_array.grep /A/
© www.soinside.com 2019 - 2024. All rights reserved.