[英]I am doing codewars challenge Replace With Alphabet Position, but i don't understand it
挑戰說給定一個字符串,用它在字母表中的位置替換每個字母。
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) + " "
};
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()
以刪除末尾的空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.