有許多不同的方法對皮膚這隻貓,但我下手:
examp = [["ram"], ["bam"], ["mam"], ["jammy"], ["grammy"], ["foobar"], ["clamjam"]]
examp.select{ |ary| ary.any?{ |a| a['am'] } }
# => [["ram"], ["bam"], ["mam"], ["jammy"], ["grammy"], ["clamjam"]]
即選擇子陣列,其元素包含的子串'am'
。下面是與子陣的多個元素一個例子來說明什麼,它會用火柴或不匹配做:
examp = [%w[ram], %w[foo bam], %w[mam foo], %w[foo], %w[foo bar]]
examp.select{ |ary| ary.any?{ |a| a['am'] } }
# => [["ram"], ["foo", "bam"], ["mam", "foo"]]
注意,要做到這一點是不需要正則表達式。使用String's []
方法進行簡單的子字符串搜索可以很好地處理任務。此外,grep
可以使用,但不是你如何做到的。
如果你想找到包含子串子陣中的元素:使用grep
examp.map{ |ary| ary.select{ |a| a['am'] } }
# => [["ram"], ["bam"], ["mam"], [], []]
這可能已經完成:
examp.map{ |ary| ary.grep(/am/) }
# => [["ram"], ["bam"], ["mam"], [], []]
如果你想獲得擺脫了空子陣列:
examp.map{ |ary| ary.select{ |a| a['am'] } }.reject(&:empty?)
# => [["ram"], ["bam"], ["mam"]]
flatten
如果西澳結果nt擺脫子陣列:
examp.map{ |ary| ary.select{ |a| a['am'] } }.reject(&:empty?).flatten
# => ["ram", "bam", "mam"]
爲什麼您的解決方案包含'foobar'?這恰恰是沒有我的唯一陣列; foobar是我試圖擺脫的那個。 – user3116998
@ user3116998在這種情況下,您需要'/ am /'作爲正則表達式。更新。 – Matt