Javascript 将数字改为相应的字母
我的问题是如何从数字中获得相应的字母 所以 这个数字肯定不会超过702Javascript 将数字改为相应的字母,javascript,Javascript,我的问题是如何从数字中获得相应的字母 所以 这个数字肯定不会超过702 有什么方法可以帮我做到这一点吗?对于单个字符,如A、B。。。你可以很容易地得到这个号码 num=ord(x)-65其中x是对应的字符(A,B…) 对于双字母,如(AB,BG,…) num=ord(str[0]-65)*26+(str[1]-65)其中str=xy,其中x和y是对应的字符通过按26进行模运算将数字拆分为若干部分,然后使用字符串。fromCharCode将其转换为字符: 函数numToExcelColumnNam
有什么方法可以帮我做到这一点吗?对于单个字符,如A、B。。。你可以很容易地得到这个号码
num=ord(x)-65
其中x是对应的字符(A,B…)
对于双字母,如(AB,BG,…)
num=ord(str[0]-65)*26+(str[1]-65)
其中str=xy,其中x和y是对应的字符通过按26进行模运算将数字拆分为若干部分,然后使用字符串。fromCharCode
将其转换为字符:
函数numToExcelColumnName(n){
如果(!n)返回0
n--//使0=>A
常数下限=n%26
常数上限=数学层(n/26)
返回(
上面的
?字符串.fromCharCode(65+上-1)
: ''
)
+String.fromCharCode(65+以下)
}
您甚至可以通过添加循环来扩展此代码以处理702以上的数字:
function numToExcelColumnName(n){
if(!n) return 0
let output = ''
while(n){
n--
output = String.fromCharCode(65 + n % 26) + output
n = Math.floor(n / 26)
}
return output
}
我喜欢这个挑战,因此我编写了以下代码:
function NumbersToLetters(num) {
var letArr=[];
function numToLet(letterArray, number) {
if(number>0) {
var whole=Math.floor((number-1)/26);
var reminder=(number-1)%26;
letterArray.unshift(String.fromCharCode(65+reminder));
numToLet(letterArray, whole);
}
};
numToLetters(letArr, num);
return letArr.length?letArr.join(""):"0";
}
使用:
NumbersToLetters(num);
你可以尝试的方法是先认真思考这个问题。祝你好运。只需702件物品,你就可以构建一个对象并将其用作hashtable@VishalDhawan,这不是每个人都在尝试的方法吗?@akaphenemom,我在寻找一个函数,而不是一个有702个键的对象。将你的数字除以26+1(以说明0)并将其降低。使用它索引到字符串“0ABC…XYZ”
。这是你的第一个数字。然后将您的数字模化27,并再次索引到字符串中。那是你的第二个数字。
NumbersToLetters(num);