回答編集履歴
3
テキスト修正
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
let bun2 = '';
|
38
38
|
|
39
|
-
const matches =
|
39
|
+
const matches = bun.matchAll(/pen/g);
|
40
40
|
|
41
41
|
|
42
42
|
|
2
テキスト修正
test
CHANGED
@@ -36,15 +36,19 @@
|
|
36
36
|
|
37
37
|
let bun2 = '';
|
38
38
|
|
39
|
+
const matches = [...bun.matchAll(/pen/g)];
|
39
40
|
|
40
41
|
|
42
|
+
|
41
|
-
for (const m of
|
43
|
+
for (const m of matches) {
|
42
44
|
|
43
45
|
const spaces = ' '.repeat(m.index - bun2.length);
|
44
46
|
|
45
47
|
bun2 += `${spaces}${m[0]}`;
|
46
48
|
|
47
49
|
}
|
50
|
+
|
51
|
+
|
48
52
|
|
49
53
|
bun2 += ' '.repeat(bun.length - bun2.length);
|
50
54
|
|
1
テキスト修正
test
CHANGED
@@ -28,4 +28,32 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
+
ただし、上記のやり方だと、`bun` の各文字のインデクス `i` について、`matches` に含まれるマッチした区間に含まれていないかを、すべての区間について調べるところが無駄です。以下は、この無駄を行わないコードです。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
```javascript
|
36
|
+
|
37
|
+
let bun2 = '';
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
for (const m of [...bun.matchAll(/pen/g)]) {
|
42
|
+
|
43
|
+
const spaces = ' '.repeat(m.index - bun2.length);
|
44
|
+
|
45
|
+
bun2 += `${spaces}${m[0]}`;
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
bun2 += ' '.repeat(bun.length - bun2.length);
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
- **動作確認用サンプル3:** [https://codepen.io/jun68ykt/pen/NWNxxZM](https://codepen.io/jun68ykt/pen/NWNxxZM?editors=0012)
|
56
|
+
|
57
|
+
|
58
|
+
|
31
59
|
以上、参考になれば幸いです。
|