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;
|
}
|
}
|