【发布时间】:2012-05-04 16:35:14
【问题描述】:
我有一个表示“帐号”的字段,该字段在大多数情况下都不是数字。我需要对这些“数字”进行一些自动递增。显然不适合做数学。我们决定对我们有用的规则是我们想要找到最右边的一组数字并将它们自动递增一个并返回重建的字符串(即使这使它成为一个字符更长)。
这些数字的一些例子是:
- AC1234 -> AC1235
- GS3R2C1234 -> GS3R2C1235
- 1234 -> 1235
- A-1234 -> A-1235
- AC1234g -> AC1235g
- GS3R2C1234g -> GS3R2C1235g
- 1234g -> 1235g
- A-1234g -> A-1235g
- 999 -> 1000
- GS3R2C9999g -> GS3R2C10000g
我正在使用 C#/.NET 4.0。我将 Regex 列为标签,但这不是必需的。此解决方案不必在正则表达式中。
有什么好的方法可以做到这一点吗?理想的性能不是主要问题。我宁愿为此提供清晰且易于理解/维护的代码,除非它全部包含在正则表达式中。
谢谢!
【问题讨论】:
-
致那些投票结束并否决我的人:为什么?
-
抱歉挖掘了这个。如果它还支持 SI-00001、SI0001 和 0001 等格式,这将非常有帮助。它会删除前面的 0 并返回 SI-2、SI2 和 2。有人可以帮我解决这个问题吗?谢谢!
-
@Binsoi:您应该发布一个新问题并参考这个问题,说明您的问题与这个问题非常相似,但请注意您的问题有一些不同的要求。对不起,我帮不了你,但我对正则表达式很糟糕。 :-(
-
好的,我会的。谢谢!没关系没问题:)
-
感谢您的建议!我所做的是 Regex.Replace(SI-001, @"(? (int.Parse(m.Value) + 1).ToString().PadLeft(match.Length, '0'));它给了我 SI-002。 :)