这可能是一个不寻常的请求,但对于我的脚本,我需要一个按字母而不是数字递增的函数。例如:
这是一个数字示例:
var i = 0;
while(condition){
window.write('We are at '+i);
++i;
}
本质上,我想像 Microsoft Excel 那样用字母而不是数字进行计数。因此,我不需要打印“我们在 0”、“我们在 1”、“我们在 2”等,而是需要打印“我们在 A”、“我们在 B”、“我们在C”等
为了模仿 Excel(我能想到的唯一例子),在达到索引 25 (Z) 后,我们可以继续使用“AA”、“AB”、“AC”等。
所以它会像这样工作得很好:
var i = 0;
while(condition){
window.write('We are at '+toLetter(i));
++i;
}
如果有人可以编写一个函数,然后将字母转换回数字,即 toNumber('A') = 0 或 toNumber('DC') = 107 (我认为),那就更好了。
Thanks!
这是一个将数字转换为字母的简单递归函数。
它是基于 1 的,所以 1 是 A,26 是 Z,27 是 AA。
function toLetters(num) {
"use strict";
var mod = num % 26,
pow = num / 26 | 0,
out = mod ? String.fromCharCode(64 + mod) : (--pow, 'Z');
return pow ? toLetters(pow) + out : out;
}
这是一个将字符串转换回数字的匹配函数:
function fromLetters(str) {
"use strict";
var out = 0, len = str.length, pos = len;
while (--pos > -1) {
out += (str.charCodeAt(pos) - 64) * Math.pow(26, len - 1 - pos);
}
return out;
}
A test: http://jsfiddle.net/St6c9/ http://jsfiddle.net/St6c9/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)