我需要使用get_integer_from_string()函数将输入字符串转换为整数 我正在使用Ruby 我有这个时间表。
基于我们需要从基数7转换到基数10的计划
请注意: 1-如果遇到没有数字序列的字符串,则应返回零(0)。
2-字符串可以在形成整数的字符之后包含其他字符,这些字符将被忽略并且对此函数的行为没有影响。
感谢您帮我完成作业。
答案 0 :(得分:5)
正如Tim上面所指出的那样,你的表显示了基数7,而不是6. String#to_i
和Fixnum#to_s
都选择了一个可选的基数(基数)参数:
p "020".to_i(7)
# => 14
p 14.to_s(7)
# => "20"
为了处理不是0-6的尾随字符,String#slice
(a.k.a。String#[]
)效果很好:
expr = /^[0-6]*/
p "72"[expr].to_i(7)
# => 0
p "0202xyz"[expr].to_i(7)
# => 100
p "27"[expr].to_i(7)
# => 2
答案 1 :(得分:1)
您要做的是将字符串(表示基数为7的数字)转换为基数为10的整数。这可以通过
完成"021".to_i(7)
# => 15
请参阅Ruby String类的Documentation以获取方法to_i()
答案 2 :(得分:0)
我说这不确定它是否正确
def get_integer_from_string(str)
return 0 if (/^(?<num>\d+)$/ =~ str).nil?
result = 0
str.reverse.each_char.with_index do |char, index|
tmp = char.to_i * 7**index
result += tmp
end
result rescue 0
end