开发中总是遇到要求后端根据已有数据生成流水号或者数据编号需求,烦不胜烦,下边是提取的补位方法
1. 根据已添加的编号生成新标号
设:现有数据20条,期间未删除过数据,编号由000001开始至000020结束,现重新插入一条数据,故新生成编号应是:000021 由于数据不能直接做加减,需要转为数字之后再增加(哪怕是从数据库直接做 filed + 1操作,最终的出来的结果是21 而非000021),所以需要对编号补位后再保存,方法如下:
/**
* 左侧补位
* totalLength 数值等于编号总长度,假如编号前加有字母的还需要再单独处理字母
* 输入:number=11,totalLength = 5
* 输出: 00011
* 不想补0时可以将百分号后的0换成需要补充的字符
* @param number 需要补位的编号
* @param totalLength 需要补位的总长度
* @return 返回补位后的数据
*/
public static String padLeftZero(int number, int totalLength) {
return String.format("%0" + totalLength + "d", number);
}
/**
* 右侧补位
* 输入:number=11,totalLength = 5
* 输出: 11000
*
* @param number 需要补位的编号
* @param totalLength 需要补位的总长度
* @return 返回补位后的数据
*/
public static String padRightZero(int number, int totalLength) {
return String.format("%-" + totalLength + "s", number).replace(' ', '0');
}
以上方法均为自动补充数字0,如需自定义补充时则需要对方法进行修改:
2. 自定义补充
/**
* 左侧补位自定义字符
*
* @param number 需要补位的编号
* @param totalLength 需要补位的总长度
* @return 返回补位后的数据
*/
public static String padLeftCustom(int number, int totalLength) {
return String.format("%" + totalLength + "s", number).replace(' ', 's');
}
/**
* 右侧补位自定义字符
*
* @param number 需要补位的编号
* @param totalLength 需要补位的总长度
* @return 返回补位后的数据
*/
public static String padRightZero(int number, int totalLength) {
return String.format("%-" + totalLength + "s", number).replace(' ', '0');
}
好啦,希望对你可以有帮助!