2016-04-25 66 views
2

我想从整数的末尾删除任意的零。例如,如果我有14260,我想以1426结束。 142600我还想结束1426从一个整数的末尾删除任何零

我已经看了一圈,找不到整数的解决方案,只是很多人都在讨论从浮点数中删除前导零和零。

回答

5

转换为字符串,子和转换回INT:

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

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

好极了,谢谢你。 我可以问一下+ $的意义是什么?我是否需要从字符串中删除不同的字符,我是否能够将该序列中的0替换为我想要删除的字符? – Oscady

+0

'/ 0 + $ /'表示您在字符串的末尾查找连续的“0”。是的,你可以用任何想要的字符替换0,它会在字符串结尾查找连续的字符。 – shivam

+0

....或者'14600.to_s [/ - ?\ d * [1-9] /] .to_i'。 –

3

要额外的,你可以处理它像数:

num = 1220000 
num_without_zeros = num 

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

num_without_zeros 
#=> 122 
+0

虽然是正确的,但一个缺点是你正在失去原来的int。 – shivam

+0

@shivam,我认为这并不重要,但无论如何,我已经更新了我的答案,谢谢:) – Ilya

+0

它的真实对于OP来说可能并不重要,但是如果不需要它总是更好的保存值:) – shivam