回答編集履歴

2

ごじ

2022/12/05 12:34

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -37,7 +37,7 @@
37
37
  // 母音(aeiou)を大文字に変換
38
38
  const originalStr2 = 'I am a dog.';
39
39
  const newStr2 = originalStr2.replace(/[aeiou]/g, s => s.toUpperCase());
40
- console.log(newStr2); // 'I Am A dOggy.'
40
+ console.log(newStr2); // 'I Am A dOg.'
41
41
  ```
42
42
  ### 質問者様のコードの不具合
43
43
  - `if()`の丸括弧の中には条件式を入れるはずなのに、なぜか`if(text = jikkenWord.match(/[A-Za-z0-9]/g)){`と、変数に値を代入している。

1

追記

2022/12/05 09:39

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -11,7 +11,7 @@
11
11
  - 文字列には文字コードが割り振られています。
12
12
  - そのコードを変更してやることで、全角→半角に変換します。
13
13
  - それがこの部分です→`String.fromCharCode(s.charCodeAt(0) - 0xFEE0)`
14
- - `0xFEE0`の部分が基準となる番号)
14
+ - そして、`0xFEE0`の部分が番号の差分になります(下記例だと100
15
15
  - どういう仕組みかというと、
16
16
  - 例えば、全角「1」の文字コードが201番で、半角「1」が101番だったとします。
17
17
  - 同様に例えば、全角「A」の文字コードが320番で、半角「A」が220番だったとします。
@@ -19,3 +19,27 @@
19
19
  - 上記例の全角・半角の番号は適当ですが、実際にも全角・半角の英数字は番号が等間隔で離れているので、
20
20
  - 引いてやると、全角→半角
21
21
  - 逆に足してやると、半角→全角 にできます。
22
+
23
+ ### `.replace()`メソッドについて
24
+ ```javascript
25
+ 元の文字列.replace(パターン, 変換後の文字列)
26
+ ```
27
+ - 第一引数は、正規表現(またはただの文字列でも可)で該当する文字列を検索
28
+ - 第二引数は、該当した文字列の変換後の文字列、または変換後の文字列を戻すコールバック関数
29
+
30
+
31
+ ```javascript
32
+ // 'dog' => 'cat'に変換
33
+ const originalStr1 = 'I am a dog. You are not a dog.';
34
+ const newStr1 = originalStr1.replace('dog', 'cat');
35
+ console.log(newStr1); // 'I am a cat. You are not a dog.'
36
+
37
+ // 母音(aeiou)を大文字に変換
38
+ const originalStr2 = 'I am a dog.';
39
+ const newStr2 = originalStr2.replace(/[aeiou]/g, s => s.toUpperCase());
40
+ console.log(newStr2); // 'I Am A dOggy.'
41
+ ```
42
+ ### 質問者様のコードの不具合
43
+ - `if()`の丸括弧の中には条件式を入れるはずなのに、なぜか`if(text = jikkenWord.match(/[A-Za-z0-9]/g)){`と、変数に値を代入している。
44
+ - `===`の勘違いかとは思いますが、それにしてもおかしいです。
45
+ - `.replace()`は条件に合致(マッチ)したものを変換してくれるメソッドなので、`.match()`不要。