[[📗TDQ-004 データ型]]でも少し触れましたが、文字列についての基礎と頻出する判定方法を学びましょう。
## Reference
- [文字列 · JavaScript Primer \#jsprimer](https://jsprimer.net/basic/string/)
## Mission 1
#🙂NORMAL
以下のコードをリファクタリングしてください。
```js
const message = "## 概要" + "\n\n" +
"[[📗TDQ-004 データ型]]でも少し触れましたが、文字列と正規表現についての基礎と頻出する判定方法を学びましょう。\n";
```
%%
解答例
```js
const message = `
## 概要
[[📗TDQ-004 データ型]]でも少し触れましたが、文字列と正規表現についての基礎と頻出する判定方法を学びましょう。
`.trimStart();
```
%%
> [!hint]- Hint 1
> [[テンプレートリテラル (JavaScript)|テンプレートリテラル]]を使います。
## Mission 2
#🙂NORMAL
以下のコードを[[テンプレートリテラル (JavaScript)|テンプレートリテラル]]を使わない実装に変えてください。
```js
const message = `
| id | name |
|----|----------|
| 1 | "ichiro" |
| 2 | "Y's" |
`.trim();
```
%%
解答例
```js
const message2 = "| id | name |\n" +
"|----|----------|\n" +
'| 1 | "ichiro" |\n' +
'| 2 | "Y\'s" |';
```
%%
> [!hint]- Hint 1
> 文字列リテラルとして利用したコーテーションはエスケープが必要です。
## Mission 3
#🙂NORMAL
以下のテストが通過するように関数 `hoge` を実装してください。
```js
const services = [
"GitHub",
"GitLab",
"GitHub Copilot",
"Bitbucket",
"ChatGPT",
"Vim",
"Neovim",
];
/**
* vimを含む(大文字小文字の区別なし) or Gitで始まるものを抽出する
*/
function hoge(services) {
// FIXME: 実装
}
import { expect } from "jsr:@std/expect";
Deno.test("vimを含む(大文字小文字の区別なし) or Gitで始まるものを抽出する", () => {
expect(hoge(services)).toEqual([
"GitHub",
"GitLab",
"GitHub Copilot",
"Vim",
"Neovim",
]);
});
```
%%
解答例
```js
function hoge(services) {
return services.filter((x) =>
x.toLowerCase().includes("vim") || x.startsWith("Git")
);
}
```
%%
> [!hint]- Hint 1
> 大文字小文字を無視して判定するには、比較対象をすべて小文字にしてしまうと良いでしょう。
---
*NEXT* >> [[📗TDQ-020 正規表現]]