如何编写实现字符串末尾数字自增功能的Java程序?
Java字符串自增函数实现
满足规则
- 若字符串以数字结尾,将末尾数字加1
- 若字符串不以数字结尾,在新字符串末尾追加数字1
- 若末尾数字包含前导零,自增后需保持原数字的位数不变
完整代码
public class StringIncrementer { public static String incrementString(String str) { // 定位末尾连续数字的起始位置 int numStartIdx = str.length(); while (numStartIdx > 0 && Character.isDigit(str.charAt(numStartIdx - 1))) { numStartIdx--; } // 无数字后缀的场景 if (numStartIdx == str.length()) { return str + "1"; } // 拆分前缀和数字部分 String prefix = str.substring(0, numStartIdx); String numPart = str.substring(numStartIdx); int numLength = numPart.length(); // 数字自增后补前导零,保持原长度 long incrementNum = Long.parseLong(numPart) + 1; String newNumPart = String.format("%0" + numLength + "d", incrementNum); return prefix + newNumPart; } public static void main(String[] args) { // 测试用例 System.out.println(incrementString("abc")); // abc1 System.out.println(incrementString("abc123")); // abc124 System.out.println(incrementString("abc001")); // abc002 System.out.println(incrementString("abc099")); // abc100 System.out.println(incrementString("0012")); // 0013 System.out.println(incrementString("test999")); // test1000 } }
实现说明
- 从字符串尾部向前遍历定位连续数字的起始索引,拆分非数字前缀和数字后缀
- 数字后缀自增后通过
String.format的前导零填充规则,保证和原数字后缀位数一致 - 采用
Long类型存储数字避免常规场景下的溢出问题,若需支持超长数字后缀,可将数字处理逻辑替换为BigInteger实现
测试结果示例
| 输入 | 输出 |
|---|---|
abc | abc1 |
abc123 | abc124 |
abc001 | abc002 |
abc099 | abc100 |
0012 | 0013 |
test999 | test1000 |
内容的提问来源于stack exchange,提问作者GRISHMA
相关产品推荐
相关产品推荐

