我输入"901000"
作为以下方法的参数,我希望它删除最后三个零并返回"901"
。
def zeros(x)
str = x.to_s
i = str.length-1
while str[i] == "0"
str = str.delete(str[i])
i = i-1
end
return str
end
但它会返回"91"
。我无法理解为什么我的代码不起作用。有人可以帮忙吗?
答案 0 :(得分:3)
首先,str
为"901000"
,i = str.length-1
为5
,str[i]
为"0"
。因此,
str = str.delete(str[i])
相当于
str = "901000".delete("0")
这会给你"91"
。
然后,i = i-1
,i
变为4
,str[i]
(相当于"91"[4]
)变为nil
,{ {1}}(相当于str[i] == 0
)变为nil == 0
。因此循环结束,返回值false
,即str
。
要做你想做的事,一些简单的方法是:
"91"