簡體   English   中英

我正在做代碼戰挑戰用字母位置替換,但我不明白

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM