ruby-on-rails - ruby /Rails : Natural increase of string (succ)

标签 ruby-on-rails ruby increment

我想要连续的发票号码,但在这种情况下,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"

关于ruby-on-rails - ruby /Rails : Natural increase of string (succ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70640956/

相关文章:

ruby-on-rails - 如何让 Sidekiq 在 Heroku 上工作?

Ruby 模块和类

javascript - 动态添加字段到嵌套表单 onchange of select

ruby - 在 Ruby 中检测句子元素

ruby-on-rails - 助手中的 HAML 过滤器

java - AtomicInteger 在 JUnit 测试中不会增加

Java: block 增量和单位增量有什么区别,这些值有什么用?

c++ 增量运算符

ruby-on-rails - 添加字段以设计注册 View 后出现“无法重定向到 nil”错误

ruby-on-rails - 将一种方法链接到另一种方法如何改变原始方法