トラック
/
JavaScript
JavaScript
/
演習
/
ポエトリークラブの入場ポリシー
ポエトリークラブの入場ポリシー

ポエトリークラブの入場ポリシー

学習演習

はじめに

_文字列_は、テキストデータを保存するためのJavaScriptのデータ型です。

文字列の作成

文字列を作るには、テキストをシングルクォートかダブルクォートで囲みます。 Exercismでは、シングルクォートを使います。

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

文字の配列としての文字列

文字列は、最初の文字のインデックスが0である、文字の配列として扱うことができます。 文字列の個々の文字には、角括弧([])と、取り出したい文字のインデックスを使ってアクセスできます。

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

文字列の文字数は、lengthプロパティで調べることができます。

'cat'.length;
// => 3

連結とメソッド

文字列を連結する最も簡単な方法は、加算演算子+を使うことです。

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

文字列には便利なメソッドがたくさん用意されています。一覧はMDNの文字列メソッドのドキュメントを参照してください。 よく使うものを以下に示します。

  • toUpperCaseとtoLowerCase:すべての文字の大文字・小文字を変換します
  • trim:先頭と末尾の空白を削除します
  • includes、startsWithとendsWith:ある文字列が、与えられた文字列の一部かどうかを判定します
  • slice:文字列の一部を取り出します

JavaScriptの文字列はイミュータブルです。そのため、上のメソッドなどによる「変更」では、常に新しい文字列が作られます。

説明

街に新しい詩人会ができて、入会してみようかと考えています。 これまでにもいくつか事件があったため、この会にはとても厳格な入館ルールがあり、入ろうとする前にそれをマスターしておく必要があります。

詩人会には正面のドアと裏口の2つのドアがあり、どちらにも門番が立っています。 中に入るには、その日のパスワードを導き出す必要があります。

パスワードは必ず詩に基づいていて、次の2つの手順で導き出せます。

  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. 単語の先頭を大文字にする

正しい文字がそろったら、正面のドアのパスワードを得るために必要なのは、単語の先頭を正しく大文字にすることだけです。

文字列(タスク1で見つけた文字をつなげたもの)を受け取り、先頭を大文字にした正しい形で返す関数frontDoorPasswordを実装してください。

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'を付け加えてパスワードを導き出します。

文字列(タスク3で見つけた文字をつなげたもの)を受け取り、先頭を大文字にしたパスワードの丁寧なバージョンを返す関数backDoorPasswordを実装してください。

backDoorPassword('horse');
// => "Horse, please"
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
JavaScript Exercism

ポエトリークラブの入場ポリシーを始める準備はできましたか?

Exercismに登録すれば、37個のコンセプト159個の演習、そして本物の人間によるメンタリングとともに、JavaScriptを学んでマスターできます。すべて無料です。