如何从字符串应用递增数字(发票号码)

时间:2014-12-15 20:13:53

标签: ruby-on-rails ruby

我正在尝试在我当前的应用程序上实现递增发票编号,但是由于应用程序发票是字符串,我对如何处理它感到困惑。

目前,发票编号如下所示:Q20140001并且每张新发票应增加1(因此下一个发票编号为Q20140002)。 我想做的就是拆分字符串(进入Q20140001)。然后我希望将20140001数字增加到20140002

我的猜测是,每当我想创建一个新号码时,我会检查存储在数据库中的最后一个发票号,将其解析为字符串和整数,取整数并将其递增1,然后重新添加Q值。

我不确定我的方法是否正确。

1 个答案:

答案 0 :(得分:4)

您是否尝试使用String#succ方法?

IRB会议:

2.1.2 :001 > 'Q20140001'.succ
 => "Q20140002"
2.1.2 :002 >

您必须记住的一件事是,在99999999发票之后,结果可能不是您想要的:

2.1.2 :002 > 'Q99999999'.succ
 => "R00000000"
2.1.2 :003 >

Q将增加到下一个ASCII位置R,从而产生R00000000。一种可能的解决方案是使用足够的零填充发票编号,例如:Q00000000020140001或保留原样,从长远来看可能更好。