// 获取下一个编号 export function getNextNumber(oldNumber: string): string | null { // 检查是否为空 if (!oldNumber) return null; // 分离前缀和数字部分 const prefixMatch = oldNumber.match(/^[A-Za-z]*/); const prefix = prefixMatch ? prefixMatch[0] : ''; const numberPart = oldNumber.slice(prefix.length); // 检查数字部分是否有效 if (!/^\d+$/.test(numberPart)) { return null; // 无效的数字部分 } // 将数字部分转为整数并加1 const number = parseInt(numberPart, 10) + 1; // 保持原有的数字位数,用0填充(next保持补0逻辑不变) const nextNumberPart = number.toString().padStart(numberPart.length, '0'); // 拼接前缀和新的数字部分 return prefix + nextNumberPart; } // 获取上一个编号,处理边界情况 export function getPreviousNumber(oldNumber: string): string | null { // 检查是否为空 if (!oldNumber) return null; // 分离前缀和数字部分 const prefixMatch = oldNumber.match(/^[A-Za-z]*/); const prefix = prefixMatch ? prefixMatch[0] : ''; const numberPart = oldNumber.slice(prefix.length); // 检查数字部分是否有效 if (!/^\d+$/.test(numberPart)) { return null; // 无效的数字部分 } // 将数字部分转为整数 const number = parseInt(numberPart, 10); // 处理边界情况:如果已经是1,则保持不变 if (number <= 1) { return oldNumber; } // 数字减1 const previousNumber = number - 1; const previousNumberPart = previousNumber.toString(); // 拼接前缀和新的数字部分 return prefix + previousNumberPart; }