我正在做代码战挑战替换字母位置,但我不理解它

时间:2016-10-25 13:38:59

标签: javascript unicode utf-8

挑战说给定一个字符串,用字母表中的位置替换每个字母。

4个小时我无法找到解决方案。我试过正则表达式(不知道它是如何工作的)。我试图找到一个解决方案,但我完全不了解它

代码是这个

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) + " "
};

1 个答案:

答案 0 :(得分:0)

dplyr

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

for (var i = 0; i < text.length; i++)

这开始定义字母的字母位置。它基本上说:“对于var code = text.toUpperCase().charCodeAt(i) 中的每个字符,返回其字符代码text

charCodeAt(i)

正如第一句话所述,大写字母A到Z的字符代码以65(A)开始,以90(Z)结尾。因此,我们只需要字母A到Z的代码(例如,我们不在乎空格或引号的代码)。 由于我们希望A等于1,因此必须从字符代码中减去64 (65-64 = 1,对于B而言,同样,66-64 = 2,依此类推)。

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

此部分将过滤后的字母代码添加到结果中,并增加了可读性。它针对由result += (code - 64) + " " 语句过滤的每个字符代码执行此操作。

if

然后,我们只返回整个字符串并在末尾减去不必要的空格。

注意:您也可以简单地返回return result.slice(0, result.length-1); 来删除最后的空格。