回答編集履歴
3
もう一つの方法
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
単純にスペースで照合をかけているので、text2ではhogeの後のスペースも含まれてしまっています。
|
3
3
|
開始のスペースだけにマッチさせるようにする必要があります。
|
4
4
|
|
5
|
-
### コード例
|
5
|
+
### コード例1
|
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
ついき
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
- 開始のスペースだけカウントしたいのですから、配列の[0]番目が欲しいので`['スペースx2', 'スペースx2'][0]`という形で指定しています。
|
23
23
|
- `['スペースx2'].match(/ /g)`で半角スペースをマッチさせます。
|
24
24
|
- マッチするものがなければ` || []`で長さ0の配列にします。
|
25
|
-
- `['
|
25
|
+
- matchによって出来上がった配列を、`['スペースx1', 'スペースx1'].length`で、スペースの数を数えます。
|
26
26
|
|
27
27
|
---
|
28
28
|
|
1
区別しないバージョン
test
CHANGED
@@ -18,8 +18,16 @@
|
|
18
18
|
上記のコードをtext2を例にとって解説していいきます。
|
19
19
|
|
20
20
|
- `.split(text.trim())`は、つまり`.split('hoge')`ということです。
|
21
|
-
- `' hoge '`を→`['
|
21
|
+
- `' hoge '`を→`['スペースx2', 'スペースx2']`という配列に変換します。
|
22
|
-
- 開始のスペースだけカウントしたいのですから、配列の[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
|
+
```
|