回答編集履歴
2
シンタックスハイライトをつける
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
> 文字列中で pattern にマッチした部分を順番にブロックに渡し、 その実行結果で置き換えた文字列を生成して返します。
|
13
13
|
|
14
|
-
```
|
14
|
+
```ruby
|
15
15
|
replaced_body_md = body_md.gsub(/[[(.+)]]/) { |(ref)|
|
16
16
|
"[#{ref}](/posts/#{name_tbl[ref]})"
|
17
17
|
}
|
1
gsubの使い方をコメント
answer
CHANGED
@@ -3,4 +3,16 @@
|
|
3
3
|
```
|
4
4
|
|
5
5
|
はおそらく `$name_tbl[ref]` で発生しています。 `$name_tbl` (グローバル変数)は無いですから、 `nil` になってしまいます。
|
6
|
-
`name_tbl[ref]` でいいんじゃないでしょうか。
|
6
|
+
`name_tbl[ref]` でいいんじゃないでしょうか。
|
7
|
+
|
8
|
+
それと、`scan` と `gsub!` を同時に使うのは良くないと思います。scanで一度検索したあと、その文字列そのものを置き換えると挙動がおかしくなりかねません。
|
9
|
+
`gsub` は `scan` と同じようにブロックを使うことが出来ます。
|
10
|
+
https://docs.ruby-lang.org/ja/latest/method/String/i/gsub.html
|
11
|
+
|
12
|
+
> 文字列中で pattern にマッチした部分を順番にブロックに渡し、 その実行結果で置き換えた文字列を生成して返します。
|
13
|
+
|
14
|
+
```
|
15
|
+
replaced_body_md = body_md.gsub(/[[(.+)]]/) { |(ref)|
|
16
|
+
"[#{ref}](/posts/#{name_tbl[ref]})"
|
17
|
+
}
|
18
|
+
```
|