我有一个字符串数组,我需要从中提取第一个单词,将它们转换为整数并求和。
示例:
["5 Apple", "5 Orange", "15 Grapes"]
预期输出=> 25
我的尝试
["5","5","15"].map(&:to_i).sum
答案 0 :(得分:8)
我从您的问题中找到了答案。
["5 Apple", "5 Orange", "15 Grapes"].map(&:to_i).sum
在数组中,如果存在任何可转换的整数值,则它将自动转换为整数。
答案 1 :(得分:5)
使用#split
进行映射:
["5 Apple", "5 Orange", "15 Grapes"].map{|s| s.split.first.to_i }.sum
=> 25
答案 2 :(得分:3)
String#to_i
在字符串的开头查找数字并将其转换为整数:
'Foo'.to_i # => 0
'5 Bar'.to_i # => 5
'Baz 5'.to_i # => 0
因此只将to_i
的结果求和:
["5 Apple", "5 Orange", "15 Grapes"].sum(&:to_i) # => 25
答案 3 :(得分:1)
["5 Apple", "5 Orange", "15 Grapes"].sum { |w| w.split(' ').first.to_i }
可以解决问题。
答案 4 :(得分:0)
我看到这是Ruby部分中最受欢迎的问题,所以这是另一种方式:
["5 Apple", "5 Orange", "15 Grapes"].reduce(0) {|sum,n| sum + n.to_i}
或者按照@EricDuminil的建议,只是:
["5 Apple", "5 Orange", "15 Grapes"].sum(&:to_i)