自定义编码按要求递增

概述

有时候编码不是数字,由数组字母组成,但是又需要有序递增。

代码Demo

附上ASCII码参考页面
https://tool.oschina.net/commons?type=4

需求:有一组长度不确定的编码,需要依次累加.每位取值范围是0-9A-Z。
到10的时候需要自动转成A
比如

  • A000 -> A001
  • A009->A00A
  • A00Z->A010

我的做法是代码里直接转成ACII码直接累加

public static String addAndGetNext(String str){
    Assert.notNull(str, "字符不能为空");

    char[] str_chars = str.toCharArray();

    int length = str_chars.length;

    int currentIndex = length - 1;

    indexCharAdd(str_chars, currentIndex);

    return String.valueOf(str_chars);
}

public static void indexCharAdd(char[] str_chars, int index){
    if(index < 0){
        return;
    }

    char str_char = str_chars[index];
    int str_chars_ascii = str_char + 1;
    
    //在(57,65)这段范围里是特殊字符,累加后大于58小于65的的直接跳到字母A
    if(str_chars_ascii > 57 && str_chars_ascii < 65){
        str_chars_ascii = 65;
    }

    if(str_chars_ascii > 90){
        str_chars_ascii = 48;

        indexCharAdd(str_chars, index - 1);
    }
    str_chars[index] = (char) str_chars_ascii;
}

测试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值