String 字符串 加一

业务需求获取已存在的数据编号+1

编号格式:字母加字符串长度未知;字母不定;
    /**
     * 字符串+1方法,该方法将其结尾的整数+1,适用于任何以整数结尾的字符串,不限格式,不限分隔bai符。
     *
     * @param str 要+1的字符串
     * @return +1后的字符串
     */
    public static String strAddOne(String str) {
        String[] strings = str.split("");
        //校验尾数;尾数不是0直接return 或 抛出异常 自行决定
        if (!Character.isDigit(strings[strings.length-1].toCharArray()[0])){
            return null;
        }
        boolean b = false;//是否进1
        List<String> list = Lists.newArrayList(strings);
        for (int i = list.size() - 1; i >= 0; i--) {
            String s = list.get(i);
            if (Character.isDigit(s.toCharArray()[0])){
                int integer = Integer.parseInt(s);
                if (integer==9){
                    list.set(i, "0");
                    b = true;
                }else {
                    list.set(i, Integer.toString(++integer));
                    break;
                }
            }else {
                //表示list.get(i) 不是数字
                if (b){
                    //进1 这会导致长度加一 请注意是否会超过数据库可存储长度
                    list.add(i+1,"1");
                }
                //结束循环
                break;
            }
        }
        return StringUtils.join(list,"");
    }

import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;

测试方法

    @Test
    public void test0005(){
        for (int i = 0;i<100;i++ ){
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            System.out.println(uuid);
            System.out.println(addOne(uuid));
            System.out.println();
        }
    }

结果

3539761d087a4087a31f04bb5c36bb38
3539761d087a4087a31f04bb5c36bb39

25110beed2b34334a007569930cb1677
25110beed2b34334a007569930cb1678

9e67f9bc42074ffda7ebbaf46170d013
9e67f9bc42074ffda7ebbaf46170d014

5672f3b9ba184f91adfcedb716c40b79
5672f3b9ba184f91adfcedb716c40b80

e6ad6a8162dc44988147a3cd7ff957d7
e6ad6a8162dc44988147a3cd7ff957d8

59886d54fd8a4051aa906671c83079f5
59886d54fd8a4051aa906671c83079f6

4ae8d2931ca04dd58c82a65fba68b8fc
null

8ca8ed946a2448c3914ff22b7569a44d
null

bf4a9caf9f414257b6db091ed36e6a49
bf4a9caf9f414257b6db091ed36e6a50

5a0ddc63ffad4fdd8188a98b9b3b2499
5a0ddc63ffad4fdd8188a98b9b3b2500

9667d3787186499bad24071c8ca064cf
null
如果你想在C++字符串中的数字上循环加一,可以使用C++标准库中的一些函数来实现。以下是一个示例程序: ```cpp #include <iostream> #include <string> #include <sstream> using namespace std; int main() { string str = "abc123def456"; string newStr = ""; for(int i = 0; i < str.length(); i++) { if(isdigit(str[i])) // 如果当前字符是数字 { int num = str[i] - '0'; // 将字符转换为数字 num = (num + 1) % 10; // 执行循环加一操作 char newChar = num + '0'; // 将数字转换回字符 newStr += newChar; // 将新字符添到新字符串中 } else // 如果当前字符不是数字 { newStr += str[i]; // 直接将字符添到新字符串中 } } cout << newStr << endl; return 0; } ``` 在此示例中,我们首先定义了一个字符串`str`,其中包含数字。然后,我们使用一个循环遍历该字符串的每个字符。如果当前字符是数字,我们将其转换为数字并执行循环加一操作。否则,我们将当前字符直接添到新字符串`newStr`中。 在此示例中,我们使用了C++标准库中的`isdigit()`函数来检查当前字符是否是数字。我们还使用了C++标准库中的`stringstream`类来将字符转换为数字,并使用法和取模运算来执行循环加一操作。最后,我们将数字转换回字符并将其添到新字符串`newStr`中。 请注意,此示例仅适用于字符串中包含单个数字的情况。如果你的字符串中包含多个数字(例如,有些数字可能包含两位或更多位),则需要修改代码以处理这种情况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值