我正在做codewars挑战Replace With Alphabet Position,但我不理解它

I am doing codewars challenge Replace With Alphabet Position, but i don't understand it

本文关键字:Position 不理解 Alphabet Replace codewars 挑战 With      更新时间:2023-09-26

题目是给定一个字符串,用它在字母表中的位置替换每个字母。

整整4个小时我都找不到解决办法。我尝试了regex(我还不太明白它是如何工作的)。我试图找到一个解决方案,但我不完全理解它

代码如下

function alphabetPosition(text) {
var result = "";
for (var i = 0; i < text.length; i++){
var code = text.toUpperCase().charCodeAt(i)
if (code > 64 && code < 91) {
result += (code - 64) + " "
};
}
return result.slice(0, result.length-1);
}

我不明白var code = ......后为什么要这样做

if (code > 64 && code < 91) {
result += (code - 64) + " "
};
for (var i = 0; i < text.length; i++)

这只是循环遍历text参数中的每个字母。

var code = text.toUpperCase().charCodeAt(i)

这开始定义字母的字母表位置。它基本上是说:"对于text中的每个字符,返回其字符代码charCodeAt(i)

if (code > 64 && code < 91) {
result += (code - 64) + " "
};

正如第一条注释所说,大写字母A到Z的字符代码从65 (A)开始,以90 (Z)结束。因此,我们只需要字母A到Z的代码(例如,我们不关心空格或引号的代码)。因为我们想让A等于1,我们必须从字符代码中减去64(65 - 64 = 1, B也一样,66 - 64 = 2,等等)。

result += (code - 64) + " "

这部分将过滤后的字母代码添加到结果中,并添加一个空格以提高可读性。它对if语句过滤的每个字符代码执行此操作。

return result.slice(0, result.length-1);

然后,简单地返回整个字符串并减去末尾不必要的空格。

注意:您也可以简单地返回result.trim()以删除末尾的空格。