我有一个包含很多数字的字符串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'
这样的字符串。
答案 0 :(得分:0)
要将您的字符串转换为带有整数的数组:
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"
这是您要找的吗?