學習軌道
/
JavaScript
JavaScript
/
練習
/
詩社門禁規則
詩社門禁規則

詩社門禁規則

學習練習

簡介

字串 是 JavaScript 用來儲存文字資料的資料型態。

建立字串

建立字串的方式,就是把文字用單引號或雙引號包起來。在 Exercism 上,我們使用單引號。

'Hello, World!'
"Hello, World!"

字串是字元的陣列

字串可以視為一個字元陣列,其中第一個字元的索引是0。你可以用方括號搭配想取得的字母索引,來存取字串中的單一字元。

'cat'[1];
// => 'a'

你可以透過 length 屬性取得字串中的字元數。

'cat'.length;
// => 3

串接與方法

串接字串最簡單的方式,就是使用加法運算子 +。

'I like' + ' ' + 'cats.';
// => "I like cats."

字串提供了許多輔助方法,完整清單請見 MDN 的字串方法文件。以下列出一些常用的輔助方法。

在 JavaScript 中,字串是不可變的。因此所謂的「修改」,例如透過上面某些方法,實際上都會改為建立一個新的字串。

說明

鎮上新開了一間詩社,你正考慮要不要去參加。 因為過去曾經發生過一些事,這間詩社有一套非常嚴格的入場規定,你得先摸清楚才能進門喔。

詩社有兩扇門,一扇前門、一扇後門,兩邊都有人看守。 想進去的話,你得先想出當天的密碼。

密碼一律以一首詩為基礎,可以透過兩個步驟推導出來。

  1. 守衛會一次唸一行詩,你要針對那一行回應對應的字母。
  2. 接著守衛會把你回答過的所有字母一次告訴你,而你要用特定的格式把它們寫在一張紙上。

流程的細節取決於你想進的是哪一扇門。

1. 取得句子的第一個字母

為了得出前門密碼的字母,你要回應守衛唸給你的那行詩的第一個字母。

為了讓密碼好看一點,詩社成員喜歡用_藏頭詩_。 也就是說,每個句子的第一個字母會拼成一個單字。 以下是他們最喜歡的作家之一 Michael Lockwood 的作品。

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

所以當守衛唸Stands so high時,你要回答S;當守衛唸Huge hooves too時,你要回答H。

請實作函式frontDoorResponse,它接受一行詩作為引數,並回傳那一行的第一個字母。

frontDoorResponse('Stands so high');
// => "S"

2. 將單字首字母大寫

既然你已經收集到所有正確的字母,接下來只要把單字正確地改成首字母大寫,就能得到前門的密碼。

請實作函式frontDoorPassword,它接受一個字串(你在第 1 項任務中找到的字母組合),並回傳首字母正確大寫的結果。

frontDoorPassword('SHIRE');
// => "Shire"

frontDoorPassword('shire');
// => "Shire"

3. 取得句子的最後一個字母

為了得出後門密碼的字母,你要回應守衛唸給你的那行詩的最後一個字母。

詩社成員真的很聰明。 前面提到的那首詩同時也是_藏尾詩_,意思是每個句子的最後一個字母也會拼成一個單字:

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

當守衛唸Stands so high時,你要回答h;當守衛唸Huge hooves too時,你要回答o。

要注意的是,守衛有時會在一行的開頭或結尾加入風格上的停頓(也就是空白字元)。 你需要忽略這些停頓,才能得出正確的字母。

請實作函式backDoorResponse,它接受一行詩作為引數,並回傳那一行中最後一個不是空白字元的字母。

backDoorResponse('Stands so high');
// => "h"

backDoorResponse('Stands so high   ');
// => "h"

4. 要有禮貌

想從後門進入詩社,你得格外有禮貌。 所以這次推導密碼時,除了要把單字正確地改成首字母大寫,還要在結尾加上', please'。

請實作函式backDoorPassword,它接受一個字串(你在第 3 項任務中找到的字母組合),並回傳加上禮貌用語後的大寫密碼。

backDoorPassword('horse');
// => "Horse, please"
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
JavaScript Exercism

準備好開始 詩社門禁規則 了嗎?

註冊 Exercism,透過 37 個概念159 個練習 和真人引導來學習並精通 JavaScript,全部免費。