这个得借助ASCII了public int getNumByCol(String col){ int sum = 0;
if(!Pattern.matches("[A-Za-z]+", col)){ throw new RuntimeException("the col must be a Letter"); }
char[] charArr = col.toLowerCase().toCharArray(); int len = charArr.length; for (int i = 0; i < len; i++) { sum += ((int)charArr[i] - 96) * (int)Math.pow(26, len - i -1); }
return sum; }
/** * 可以看作是26进制,A转化成int为65,但是A代表1 * @param name * @return */ public int getNumByColName(String name){ //如果不符合返回-1 if(!Pattern.matches("[A-Z]+", name)){ return -1; } int len=name.length(); int count=0; int sum=0; //AB可以看成B乘以26的0次幂,A可以看成26的一次幂结果相加 for(int i=len-1;i>=0;i--){ sum+=(power(26, count))* ( (int)name.charAt(i)-64 ); count++; }
return sum; } /** * a的b次幂 * @param a * @param b * @return */ public int power(int a,int b){ if(a<=0||b<0){ throw new RuntimeException(); }
int sum=1; for(int i=0;i<b;i++){ sum*=a; } return sum; }
int sum = 0;
if(!Pattern.matches("[A-Za-z]+", col)){
throw new RuntimeException("the col must be a Letter");
}
char[] charArr = col.toLowerCase().toCharArray();
int len = charArr.length;
for (int i = 0; i < len; i++) {
sum += ((int)charArr[i] - 96) * (int)Math.pow(26, len - i -1);
}
return sum;
}
* 可以看作是26进制,A转化成int为65,但是A代表1
* @param name
* @return
*/
public int getNumByColName(String name){
//如果不符合返回-1
if(!Pattern.matches("[A-Z]+", name)){
return -1;
}
int len=name.length();
int count=0;
int sum=0;
//AB可以看成B乘以26的0次幂,A可以看成26的一次幂结果相加
for(int i=len-1;i>=0;i--){
sum+=(power(26, count))* ( (int)name.charAt(i)-64 );
count++;
}
return sum;
}
/**
* a的b次幂
* @param a
* @param b
* @return
*/
public int power(int a,int b){
if(a<=0||b<0){
throw new RuntimeException();
}
int sum=1;
for(int i=0;i<b;i++){
sum*=a;
}
return sum;
}