从ruby数组中的字符串元素中删除不需要的字符

时间:2016-04-26 11:15:34

标签: ruby oop

如果我有以下数组...

["a =>", "b => c", "c => f", "d => a", "e => b", "f =>"]

我怎么能让它回来......

["a", "b", "c", "c", "f", "d", "a", "e", "b", "f"]

我想与.map&使用.tr.gsub,但我永远无法理解......

4 个答案:

答案 0 :(得分:4)

假设您只想要字符串的字母:

arr = ["a =>", "b => c", "c => f", "d => a", "e => b", "f =>"]
arr.flat_map { |str| str.scan(/\w+/) }
=> ["a", "b", "c", "c", "f", "d", "a", "e", "b", "f"]

正则表达式\w表示只匹配字母,数字或下划线。

答案 1 :(得分:2)

这应该可以解决问题:

arr = ["a =>", "b => c", "c => f", "d => a", "e => b", "f =>"]

arr.join(' ').scan(/\w/) 
OR
arr.join(' ').scan(/\w+/) 


=> ["a", "b", "c", "c", "f", "d", "a", "e", "b", "f"]

有一个很好的网站名为Rubular(http://rubular.com/),您可以在其中以交互方式测试各种正则表达式与字符串。它还列出了" Regex快速参考"所以你可以了解你经常在Ruby代码中看到的正则表达式。

答案 2 :(得分:1)

["a =>", "b => c", "c => f", "d => a", "e => b", "f =>"].join.gsub(/=>| /, '').chars
# => ["a", "b", "c", "c", "f", "d", "a", "e", "b", "f"]

["a =>", "b => c", "c => f", "d => a", "e => b", "f =>"].join.gsub(/[^a-z]/, '').chars
# => ["a", "b", "c", "c", "f", "d", "a", "e", "b", "f"]

所以我将字符串连接在一起(Array#join),用空字符串(String#gsub)替换不需要的字符,并将结果字符串拆分为字符(String#chars

答案 3 :(得分:0)

根据数组的可能形式和所需的返回值,这两个问题都不清楚,您可以执行以下操作。

arr = ["a_1 =>", "b 2 => cc3", "cc3 => f6", "d4 => a_1", "e5 => b 2", "f6 =>"]

arr.flat_map { |str| str.split /\s*=>\s*/ }
  #=> ["a_1", "b 2", "cc3", "cc3", "f6", "d4", "a_1", "e5", "b 2", "f6"] 

迄今为止给出的其他答案都没有为此数组返回相同的值。