package com.vci.server.bof.utils; public class RevisionComputer { public static void main(String[] args) { RevisionComputer a = new RevisionComputer(); String start = "Zz"; String jump = "DO5"; for (int i = 0; i < 30; i++) { start = a.computerNextRevision(start, jump); //System.out.println(start); } } /** * 计划小写字符的下一个值 * @param startVal * @return */ public String cumputeLowChar(String startVal) { char[] chars = startVal.toCharArray(); boolean isCarry = false; for (int i = chars.length - 1; i >= 0; i--) { if (chars[i] == 'z') { chars[i] = 'a'; isCarry = true; } else { chars[i] = (char) (chars[i] + 1); isCarry = false; break; } } String rsValue = ""; for (int i = 0; i < chars.length; i++) { if (isCarry) { rsValue = "a"; isCarry = false; } rsValue += chars[i]; } return rsValue; } /** * 计算大写字符下一个值 * @param startVal * @return */ public String computeUpperChar(String startVal) { char[] chars = startVal.toCharArray(); boolean isCarry = false; for (int i = chars.length - 1; i >= 0; i--) { if (chars[i] == 'Z') { chars[i] = 'A'; isCarry = true; } else { chars[i] = (char) (chars[i] + 1); isCarry = false; break; } } String rsValue = ""; for (int i = 0; i < chars.length; i++) { if (isCarry) { rsValue = "A"; isCarry = false; } rsValue += chars[i]; } return rsValue; } /** * 计算数字的下一个值 * @param number * @return */ public String computerNumber(String number, String jumpCharacter) { int currentNum = Integer.valueOf(number).intValue(); return String.valueOf(currentNum + 1); } public String computerComplexVal(String currentVal, String jumpCharacter) { char[] chars = currentVal.toCharArray(); boolean isCarry = false; String prefix = ""; if (isNumber(currentVal)) { prefix = "1"; } else if (isUpperChar(currentVal)) { prefix = "A"; } else if (isLowerChar(currentVal)) { prefix = "a"; } for (int i = chars.length - 1; i >= 0; i--) { do { if (isNumber(String.valueOf(chars[i]))) { if (chars[i] == '9') { chars[i] = '0'; isCarry = true; } else { chars[i] = (char) (chars[i] + 1); isCarry = false; } } else if (isUpperChar(String.valueOf(chars[i]))) { if (chars[i] == 'Z') { chars[i] = 'A'; isCarry = true; } else { chars[i] = (char) (chars[i] + 1); isCarry = false; } } else if (isLowerChar(String.valueOf(chars[i]))) { if (chars[i] == 'z') { chars[i] = 'a'; isCarry = true; } else { chars[i] = (char) (chars[i] + 1); isCarry = false; } } } while (jumpCharacter.indexOf(String.valueOf(chars[i])) >= 0); if (!isCarry) { break; } } if (isCarry && prefix.trim().equals("")) { return currentVal; } String rsValue = ""; for (int i = 0; i < chars.length; i++) { rsValue += chars[i]; } if (isCarry) { rsValue = prefix + rsValue; } return rsValue; } /** * 计算复杂字符串的下一个值 * @param currentVal * @return */ public String computerNextRevision(String currentVal, String jumpCharacter) { String nextVal = currentVal; if (!isNumberAndChar(currentVal)) { return nextVal; } return computerComplexVal(currentVal, jumpCharacter); } /** * 判读传入的字符串是否有数字和字母组成 * @param value * @return */ public boolean isNumberAndChar(String value) { String regex = "[0-9A-Za-z]+"; if (value.matches(regex)) { return true; } return false; } /** * 判断传递字符串是否为数字 * @param revisionVal * @return */ public boolean isNumber(String value) { String regex = "[0-9]+"; if (value.matches(regex)) { return true; } return false; } /** * 判断传入字符是否是大写字符组成的字符串 * @param revisionVal * @return */ public boolean isUpperChar(String value) { String regex = "[A-Z]+"; if (value.matches(regex)) { return true; } return false; } /** * 判断传入的字符串是否为小写字符组成的字符串 * @param revisionVal * @return */ public boolean isLowerChar(String value) { String regex = "[a-z]+"; if (value.matches(regex)) { return true; } return false; } }