You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写实现字符串末尾数字自增功能的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实现

测试结果示例

输入输出
abcabc1
abc123abc124
abc001abc002
abc099abc100
00120013
test999test1000

内容的提问来源于stack exchange,提问作者GRISHMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 02:54:00