【发布时间】:2020-04-25 10:25:54
【问题描述】:
这是一个非常具体的场景,但我在这里弄乱了语法,并且在研究最佳/功能性方法时遇到了麻烦。我将解释:假设我有一个按以下方式格式化的字符串:“My-Test-docID”、“My-Test-docID-01”、“My-Test-docID-02”、“My-Test- docID-03”等
这就是我想要完成的任务。我想首先检查字符串是否以“-[2 digit number]”结尾。如果数字结尾存在,它们将始终在连字符后跟 2 位数字,例如“-01”、“-02”、“-10”等。
示例:如果字符串是“My-Test-docID”,那么我想将其更改为“My-Test-docID-01”。
如果字符串确实以数字结尾,那么我想将它们加 1。
示例:如果字符串以“-01”结尾,我想把它改成“-02”,这样“My-Test-docID-01”就变成了“My-Test-docID -02”。如果它以“-02”结尾,则变为“-03”,这样“My-Test-docID-02”就变为“My-Test-docID-03”,等等。
我有一些伪代码的想法,但无法弄清楚确切的语法。我的直觉告诉我首先用正则表达式检查结尾,然后如果数字存在,确定最后两个数字是什么并递增 1。我要写的肯定不是最佳的,但它是为了展示什么到目前为止,我已经能够想到并希望更清楚地传达这个场景。
if (docId.endsWith("-[0-9][0-9]")) {
//last 2 digits of docId +=1
else {
docId = docId + "-01"
}
我感觉这最终看起来会更加复杂,但这基本上是我想要做的,我正在寻找 if 条件和 if 语句的正确语法。
注意:如果更容易,最后的数字不必在小于 10 的情况下包含零,例如“-01”和“-02”,但我认为这在结构上可能更容易。实际上,它们永远不会大于 09,但不能保证,我想尽可能动态地编写这段代码。话虽如此,甚至不可能大于“-99”,所以我并不担心。
【问题讨论】:
-
如果字符串是
My-Test-docID-99那么它应该变成什么? -
这是个好问题。我注意到这确实不可能发生,但留下一个空白确实感觉很糟糕。我想把它保留为-99。实际上它甚至不会超过 10,但在极端情况下可能会超过 10。
标签: java regex string replace concatenation