我如何检查字符串末尾的一些数字,如果存在,将它们加1?

问题描述 投票:0回答:1

这是一个非常特殊的情况,但是我在这里弄乱了语法,在研究一种最佳/实用的方法时遇到了麻烦。我将说明:假设我使用以下方式设置了字符串格式:“ My-Test-docID”,“ My-Test-docID-01”,“ My-Test-docID-02”,“ My-Test- docID-03“,等等。

这是我要完成的任务。我想首先检查字符串是否以“-[2位数字]”结尾。如果数字末尾存在数字,则它们将始终在连字符后加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”,因此我不必担心。

java regex string replace concatenation
1个回答
0
投票

您可以在Java中使用此代码段:

String str = "Test-docID-02";
final String regex = "^(.*-)(\\d{2})$";
final Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(str);

if (m.matches()) {
   str = m.group(1) + String.format("%02d", Integer.parseInt(m.group(2)) + 1));
}    

//=> Test-docID-03
© www.soinside.com 2019 - 2024. All rights reserved.