我正在寻找将信件转换为数字的简便方法。 结果我需要得到。
A - 1, B-2,C -3 ... Z-26,AA-27,AB-28
等等。
目前,我刚刚创建了用于转换[A - Z]
中所有字母的代码public static int getNumber(String str) {
char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> letterWithNumbers = new HashMap<>();
int counter = 1;
for(char c: alphabet) {
letterWithNumbers.put(c, counter ++);
}
return letterWithNumbers.get(str.charAt(0));
}
我们如何转换下一个值?
修改:感谢评论中的 Zeb ,答案是:
public static int getNumber2(String str) {
int result = 0;
char[] alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> vals = new HashMap<>();
int i = 1;
for(char c: alph){
vals.put(c, i++);
}
char[] strChar = new StringBuilder(str).reverse().toString().toCharArray();
int base = alph.length;
int pow = 0;
for(char c: strChar){
result+=vals.get(c) * Math.pow(base, pow++);
}
return result;
}