回答編集履歴

3

もう一つの方法

2022/12/11 07:31

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -2,7 +2,7 @@
2
2
  単純にスペースで照合をかけているので、text2ではhogeの後のスペースも含まれてしまっています。
3
3
  開始のスペースだけにマッチさせるようにする必要があります。
4
4
 
5
- ### コード例
5
+ ### コード例
6
6
  ```javascript
7
7
  const text1 = " hoge"; // hogeの前に半角スペースが4つある
8
8
  const text2 = " hoge "; // hogeの前と後に半角スペースが2つある
@@ -24,10 +24,25 @@
24
24
  - マッチするものがなければ` || []`で長さ0の配列にします。
25
25
  - matchによって出来上がった配列を、`['スペースx1', 'スペースx1'].length`で、スペースの数を数えます。
26
26
 
27
- ---
28
-
29
27
  ちなみに、半角スペースと全角スペースを区別する必要がなければ、もっと短く済みます。
30
28
 
31
29
  ```javascript
32
30
  const countSpace = text => text.split(text.trim())[0].length;
33
31
  ```
32
+
33
+ ### コード例2
34
+ ```javascript
35
+ const text1 = " hoge"; // hogeの前に半角スペースが4つある
36
+ const text2 = " hoge "; // hogeの前と後に半角スペースが2つある
37
+ const text3 = "hoge "; // 開始に半角スペースがない
38
+
39
+ const countSpace = text => (text.match(/^ +/) || [])[0].length;
40
+
41
+ console.log(countSpace(text1)); // 出力結果-> 4
42
+ console.log(countSpace(text2)); // 出力結果-> 2
43
+ console.log(countSpace(text3)); // 出力結果-> 0
44
+ ```
45
+
46
+ - `/^ +/` 半角スペースから開始し、1つまたはそれ以上のスペースの連続をマッチさせる。
47
+ - マッチしない場合は`|| []`により、長さが0の配列にする。
48
+ - 配列の中の[0]番目の文字列の長さを取得する。

2

ついき

2022/12/11 07:23

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -22,7 +22,7 @@
22
22
  - 開始のスペースだけカウントしたいのですから、配列の[0]番目が欲しいので`['スペースx2', 'スペースx2'][0]`という形で指定しています。
23
23
  - `['スペースx2'].match(/ /g)`で半角スペースをマッチさせます。
24
24
  - マッチするものがなければ` || []`で長さ0の配列にします。
25
- - `['スペースx1', 'スペースx1'].length`で、スペースの数を数えます。
25
+ - matchによって出来上がった配列を、`['スペースx1', 'スペースx1'].length`で、スペースの数を数えます。
26
26
 
27
27
  ---
28
28
 

1

区別しないバージョン

2022/12/11 07:21

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -18,8 +18,16 @@
18
18
  上記のコードをtext2を例にとって解説していいきます。
19
19
 
20
20
  - `.split(text.trim())`は、つまり`.split('hoge')`ということです。
21
- - `' hoge '`を→`['スペースx2', 'スペースx2']`という配列に変換します。
21
+ - `' hoge '`を→`['スペースx2', 'スペースx2']`という配列に変換します。
22
- - 開始のスペースだけカウントしたいのですから、配列の[0]番目が欲しいので`[' ', ' '][0]`という形で指定しています。
22
+ - 開始のスペースだけカウントしたいのですから、配列の[0]番目が欲しいので`['スペースx2', 'スペースx2'][0]`という形で指定しています。
23
- - `.match(/ /g)`で半角スペースをマッチさせます。
23
+ - `['スペースx2'].match(/ /g)`で半角スペースをマッチさせます。
24
24
  - マッチするものがなければ` || []`で長さ0の配列にします。
25
25
  - `['(スペースx1)', '(スペースx1)'].length`で、スペースの数を数えます。
26
+
27
+ ---
28
+
29
+ ちなみに、半角スペースと全角スペースを区別する必要がなければ、もっと短く済みます。
30
+
31
+ ```javascript
32
+ const countSpace = text => text.split(text.trim())[0].length;
33
+ ```