首页 > 解决方案 > 如何在Ruby(Rails)中增加字符串和括号内的最新数字

问题描述

我有一个这样的字符串:

Hello (0)

也可以有这个:

Hello 12345 (0) (1) (65)

我想做的是增加最后一个数字。在这种情况下,预期结果将是这样的:

Hello (1)
Hello 12345 (0) (1) (66)

有没有办法在 Ruby 或正则表达式中神奇地做到这一点?我怎样才能保留所有括号中的所有数字但增加最后一个?

请注意,字符串中可以包含 unicode 字母,因此不应破坏结果。

标签: ruby-on-railsruby

解决方案


str = "Hello 12345 (0) (1) (65) (33a)"

str.sub(/.*\(\d+\)/, &:succ)
  #=> "Hello 12345 (0) (1) (66) (33a)"

.*是贪婪的,所以它会吞噬所有字符,包括'(0)'and '(1)',直到它到达 . 的最后一个匹配项\(\d+\)


推荐阅读