【问题标题】:How to convert an array of string integers to an array of integers? Ruby如何将字符串整数数组转换为整数数组?红宝石
【发布时间】:2022-02-13 11:58:28
【问题描述】:

我有一个数组:

all_ages = ["11", "9", "10", "8", "9"]

我想把它转换成一个整数数组,希望能更容易地将它们加在一起。 非常感谢任何帮助,正在寻找一级解决方案。

【问题讨论】:

    标签: arrays ruby string integer data-manipulation


    【解决方案1】:

    Enumerable#sum 可以通过一个块来调用,告诉 Ruby 如何对数组的元素求和,在这种情况下,首先在元素上调用 String#to_i

    all_ages = ["11", "9", "10", "8", "9"]
    all_ages.sum(&:to_i)
    #=> 47
         
    

    【讨论】:

      【解决方案2】:
      all_ages = ["11", "9", "10", "8", "9"]
      

      代码

      p all_ages.map(&:to_i).sum
      

      或者

      p all_ages.map { |x| x.to_i }.sum
      

      输出

      47
      

      【讨论】:

      • 你的传奇。你不知道我在这上面花了多长时间。谢谢!
      • p all_ages.map(&:to_i).sum 怎么写出来?
      • all_pages.sum(&:to_i)
      • 我发现array.map {block} 方法的优势在于,如果需要,它还可以轻松地将x.to_i 替换为Integer(x)
      • @MichaelB:你的意思是像array.sum(&method(:Integer))
      【解决方案3】:

      以下是一种不同的方法,可能也有助于添加到您的武器库中:

      all_ages = ["11", "9", "10", "8", "9"]
      
      def sum_str_to_i (array)
        total = 0
        array.each {|x| total += x.to_i}
        total
      end
      
      sum_str_to_i(all_ages)
      #=>  47
      

      或者,如果您不想定义新方法:

      total = 0
      all_ages.each {|x| total += x.to_i}
      
      total
      #=>  47
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-26
        • 2019-04-21
        相关资源
        最近更新 更多