字符串 +1 操作

需求

给定的字符串进行 +1 操作:

  • 该字符串可能全为数字 "000000"
  • 也可能有字符拼接(最后一部分为数字)"00sdf001"。要求整体长度不变的前提下,对最后的数字部分进行 +1 操作。
private String addOne(String snBillUse) {
    String[] strs = snBillUse.split("[^0-9]");
    // 默认最后一位为数字,获取最后一组数字
    String numStr = strs[strs.length - 1];
    if (numStr != null && numStr.length() > 0) {

        // 将字符串转为数字
        int i = Integer.valueOf(numStr) + 1;
        StringBuffer sb = new StringBuffer();
        String num = String.valueOf(i);
        //补全前面缺失的0
        for (int j = 0; j < numStr.length() - num.length(); j++) {
            sb.append("0");
        }
        // 位数保持不变,数字部分 + 1,
        if (num.length() <= numStr.length()) {
            sb.append(num);
        }else {
            // 位数操作原有位数,不进行 + 1 操作
            sb.append(numStr);
        }

        //拼接字符串
        return snBillUse.subSequence(0, snBillUse.length() - numStr.length()) + sb.toString();


    }
    return snBillUse;
}

参考博客

https://www.cnblogs.com/muhy/p/10953671.html
https://www.cnblogs.com/LT0314/p/3728609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值