如何在Ruby中将整数数组连接成一个单一的整数

10
给定数组 [1,2,3],除了迭代之外,是否有其他方法将其转换为整数 123?
3个回答

18

只需将数组连接起来,然后将结果字符串转换为整数:

[1,2,3].join.to_i

14

如果你想避免转换成和转换回字符串,你可以使用inject

[1,2,3].inject{|a,i| a*10 + i}
#=> 123

聪明——花了我一分钟才弄清楚这里发生了什么。在分别计算 [1,2,3] 中的每个元素后,累加器 a 的值依次为:010+1 = 1;然后 110+2 = 12;最后 12*10+3 = 123。 - Jon Schneider
1
欢迎所有因AoC 2021 day 8而来的朋友们! :D - Mladen Jablanović
谢谢,很高兴来到这里!:-D - Jon Schneider

7
个人而言,我会使用 标签。
Integer([1,2,3].join, 10) #=> 123

因为这种方法有一个好处,就是如果数组中有非数字元素,它会抛出一个异常,你可以处理该异常:

>> Integer([1,2,'a'].join, 10) # ArgumentError: invalid value for Integer: "12a"

将其与to_i进行比较:

>> [1,2,'a'].join.to_i #=> 12

你想要 Integer [0, 1, 1].join, 10 # => 11,而不是 Integer [0, 1, 1].join # => 9 - Jörg W Mittag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接