这时候我们就可以用到charCodeAt()方法,其作用就是传入一个字符返回对应的Unicode值。同样。A、B、C、D...是从65开始计算的,所以将获得的数值-64就好了。
var alpha = ‘A’;alpha.charCodeAt() - 64 // 1
而对于排序大于Z的序号要怎么拿到数值呢? 将序号切成一个一个的,一级一级计算对应的数值然后相加就好啦。
function changeAlphaToNum (alpha) {
var num = 0;
if (alpha.length == 1) { //如果字符长度只是1,就直接换算
num = alpha.charCodeAt() - 64;
} else {
while (alpha.length > 1) { //如果字符长度大于1,从每一级截取一个,根据当前位置,做26的幂运算并乘以当前所代表数值
var str = alpha[0];
num += Math.pow(26,alpha.length - 1) * (str.charCodeAt() - 64);
alpha = alpha.slice(1);
}
var str = alpha[0];
num += str.charCodeAt() - 64;
}
return num;
}
例:
changeAlphaToNum(‘AD’) // 30
changeAlphaToNum(‘AAA’) // 703
如果想要计算小写字母所代表的的数字,先将字符串toUpperCase(),然后再获取数值就好啦!