Ruby/Rails: 字符串自然增加(succ)

Ruby/Rails: Natural increase of string (succ)

我想要连续的发票编号,但在这种情况下 succ 方法很糟糕(双关语)。

'427'.succ
> '428' (works!)

'2021-9'.succ
> '2022-0' (does not work)

'2021.9'.succ
> '2022.0' (does not work)

我找不到用于此的 gem,只有 gem 可以自然地对字符串进行排序。如果没有人知道现有的解决方案,我会尽快用自编程的方法回答这个问题。

您可以使用 String#gsub 并在匹配的数字上应用 succ

'427'.gsub(/\D(\d+)$|^\d+$/, &:succ)
# "428"
'2021-9'.gsub(/\D(\d+)$|^\d+$/, &:succ)
# "2021-10"
'2021-624'.gsub(/\D(\d+)$|^\d+$/, &:succ)
# "2021-625"