Java中如何对带前导零的整数字符串进行递增操作?
Java带前导零整数字符串的简便递增方案
有非常简便的实现方式,核心逻辑是先转数值做递增,再按原长度补前导零即可,下面分场景给出实现:
场景1:数字长度不超过19位(普通业务场景基本够用)
直接用JDK自带的类型转换+字符串格式化实现,代码如下:
/** * 带前导零的数字串递增 * @param str 原带前导零的数字串,如"000" * @return 递增后的结果,保留原长度前导零 */ public String incrementZeroPrefixNum(String str) { // 转成long类型+1,int的话支持最多9位长度数字串 long num = Long.parseLong(str) + 1; // 按原字符串长度补前导零 return String.format("%0" + str.length() + "d", num); }
运行示例:
输入"000"→ 输出"001"
输入"009"→ 输出"010"
输入"099"→ 输出"100"
场景2:数字长度超过19位(超大数字串场景)
用BigInteger处理避免数值溢出,代码如下:
import java.math.BigInteger; public String incrementLongZeroPrefixNum(String str) { BigInteger num = new BigInteger(str).add(BigInteger.ONE); return String.format("%0" + str.length() + "d", num); }
注意:如果原字符串包含非数字字符,需要提前做合法性校验,避免转换抛出异常
内容的提问来源于stack exchange,提问作者stackerstack
相关产品推荐
相关产品推荐

