首页 > 解决方案 > 有没有最简单的方法来增加字符串的价值?

问题描述

我有一个包含很多数字的字符串 a,例如a = '4408 0412 3456 7893'.

我希望每个第二个值(从 开始index=0)乘以 2。我编写了这段代码,但这就像一个太大(而且错误)和复杂:

    a = '4408 0412 3456 7893'
    b = a.delete(' ')
    card = []
    c = b.split(//)

    c.each_with_index do |value, index|
      card << ((value.to_i) *2) if index % 2 == 0
    end

因为最后我有一个数组[8, 0, 0, 2, 6, 10, 14, 18],但我应该有另一个字符串,如'8408042264106148183'.

标签: ruby

解决方案


要将您的字符串转换为具有整数的数组:

array = '4408 0412 3456 7893'.delete(' ').split('').map(&:to_i)
# result: [4, 4, 0, 8, 0, 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3]

要将数组更改为每秒 (?) 值加倍的数组:

array.each_with_index {|v,i| i.even? ? array[i] = v*2 : array[i] = v}
# result: [8, 4, 0, 8, 0, 4, 2, 2, 6, 4, 10, 6, 14, 8, 18, 3]

再次制作一个字符串:

array.join('')
# result: "8408042264106148183"

这是你要找的吗?


推荐阅读