字符串数组中字符串第一部分的总和

时间:2019-09-17 07:23:49

标签: arrays ruby string

我有一个字符串数组,我需要从中提取第一个单词,将它们转换为整数并求和。

示例:

["5 Apple", "5 Orange", "15 Grapes"]

预期输出=> 25

我的尝试

["5","5","15"].map(&:to_i).sum

5 个答案:

答案 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)