从整数末尾删除所有的零

3
我想删除整数末尾的任何零。例如,如果我有 14260,我想得到 1426。如果是 142600,我也想得到 1426
我找过了,但没有找到整数的解决方案,只有很多人谈论如何去掉浮点数的前导零和零。
2个回答

6

转换为字符串,截取并转换回整数:

142600.to_s.sub(/0+$/,'') # /0+$/ is regex to find all trailing 0s
#=> "1426"

14200006000000000.to_s.sub(/0+$/,'').to_i
#=> 14200006

太棒了,谢谢。我可以问一下+$的意义吗?如果我需要从字符串中删除不同的字符,我是否可以将该序列中的0替换为我想要删除的字符? - Oscady
/0+$/ 表示你正在寻找字符串末尾的连续 0。是的,你可以将 0 替换为任何想要的字符,它将在字符串末尾寻找该连续字符。 - shivam

3
此外,您可以像处理数字一样处理它:
num = 1220000
num_without_zeros = num

while num_without_zeros % 10 == 0 do
  num_without_zeros /= 10
end

num_without_zeros
#=> 122

虽然正确,但一个缺点是你失去了原始的整数。 - shivam
@shivam,我认为在这种特定情况下并不重要,但无论如何,我已经更新了我的答案,谢谢:) - Ilya
这是真的,对于 OP 可能并不重要,但如果没有其他要求,保留值总是更好的 :) - shivam
可以通过将算法表达为方法来避免这个问题。 - Keith Bennett

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