_字符串_是 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 中,字符串是不可变的。因此,所谓的“修改”(比如使用上面某些方法)总是会创建一个新字符串。
镇上新开了一家诗歌俱乐部,你正想着去参加。 因为过去发生过一些意外,俱乐部有一套非常严格的门禁规矩,你得先掌握它们,才能尝试进入。
诗歌俱乐部有两扇门,一扇前门,一扇后门,两扇门都有人把守。 想要进去,你得先弄清楚当天的密码。
密码总是以一首诗为基础,可以通过两个步骤推导出来。
具体流程取决于你想进哪扇门。
要确定前门密码的字母,你需要针对守卫朗诵的每一行诗,回答那一行的第一个字母。
为了让密码好看些,诗歌俱乐部的成员喜欢用_藏头诗_。 也就是说,每句话的第一个字母能拼成一个单词。 下面是他们最喜欢的作家之一 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"
现在你已经拿到了所有正确的字母,要得到前门密码,只需要把单词的首字母正确地大写就行了。
实现函数 frontDoorPassword,它接收一个字符串(你在任务 1 中找到的组合字母),返回首字母大写后的结果。
frontDoorPassword('SHIRE');
// => "Shire"
frontDoorPassword('shire');
// => "Shire"
要确定后门密码的字母,你需要针对守卫朗诵的每一行诗,回答那一行的最后一个字母。
诗歌俱乐部的成员真的很聪明。 前面提到的那首诗同时也是_藏尾诗_,也就是说,每句话的最后一个字母也能拼成一个单词:
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"
要从后门进入诗歌俱乐部,你需要格外有礼貌。
所以要得出密码,这次你需要把单词的首字母正确地大写,并在末尾加上 ', please'。
实现函数 backDoorPassword,它接收一个字符串(你在任务 3 中找到的组合字母),返回首字母大写后的密码的礼貌版本。
backDoorPassword('horse');
// => "Horse, please"