如何使用Javascript将字母转换为数字?

IT技术 javascript
2021-03-21 19:05:46

如何在 JavaScript 中将一个字母转换为其相应的数字?

例如:

a = 0
b = 1
c = 2
d = 3

我发现了这个关于将数字转换为 26 个字符字母表之外的字母的问题,但它要求相反。

有没有办法在没有庞大数组的情况下做到这一点?

6个回答

您可以使用从字符串中的任何索引获取代码点* String.prototype.charCodeAt如果您的字符串是单个字符,您将需要 index 0,并且其代码为a97 (很容易从 JavaScript as 获得'a'.charCodeAt(0)),所以您可以这样做:

s.charCodeAt(0) - 97

如果您想String.fromCharCode反其道而行之,请获取 Unicode codepoints* 并返回一个字符串。

String.fromCharCode(97 + n)

*不完全

@fizzix,你说你想把一个数字转换成对应的字母,n那个数字也是。String.fromCharCode(97 + 3) === 'c',例如。
2021-04-28 19:05:46
那么n可以从myLetter.charCodeAt(0)?
2021-04-30 19:05:46
@fizzix:那就是c.charCodeAt(0) - 97=)
2021-05-10 19:05:46
@fizzix 来自...你。您指定n. 如果要自动弹出数组或 w/e,可以执行循环 0 到 25
2021-05-12 19:05:46
哪里n来的?
2021-05-16 19:05:46

对不起,我以为是走另一条路。

试试这个:

var str = "A";
var n = str.charCodeAt(0) - 65;
使用“ - 97”而不是“ -65”来表示小写“a”等于0
2021-05-10 19:05:46

这是简短的,并且支持大写和小写。

const alphaVal = (s) => s.toLowerCase().charCodeAt(0) - 97 + 1
有些答案是97,为什么是96?
2021-04-21 19:05:46
为什么不只是 const alphaVal = (s) => s.toLowerCase().charCodeAt(0) - 96
2021-05-10 19:05:46
@ToivoSäwén 如果要将 a 分配给 1,则使用 96,如果要将 a 分配给 0,则使用 97。
2021-05-12 19:05:46

如果您希望能够像处理 26 岁AA以后的字母一样处理 Excel,那么您可以使用从这个问题改编的以下函数

function convertLetterToNumber(str) {
  var out = 0, len = str.length;
  for (pos = 0; pos < len; pos++) {
    out += (str.charCodeAt(pos) - 64) * Math.pow(26, len - pos - 1);
  }
  return out;
}

Stack Snippets 中的演示:

您可以将 1 分配给“a”,而不是 0,以便轻松跳过(或包含)标点符号、数字或大写字母。

function a1(txt, literal){
    if(!literal) txt= txt.toLowerCase();
    return txt.split('').map(function(c){
        return 'abcdefghijklmnopqrstuvwxyz'.indexOf(c)+1 || (literal? c: '');
    }).join(' ');
}

var str = '你好,世界!';

/*  a1(str,'literal')>>value: (String)
H 5 12 12 15   1 7 1 9 14 ,   23 15 18 12 4 !
*/


/*  a1(str) >>value: (String)
8 5 12 12 15  1 7 1 9 14   23 15 18 12 4 
*/