闘魂Elixir ── 20. String.replace

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>

https://qiita.com/advent-calendar/2022

https://qiita.com/advent-calendar/2022/elixir

# はじめに

闘魂と[Elixir](https://elixir-lang.org/)が出会いました。
闘魂 meets [Elixir](https://elixir-lang.org/).です。
[Elixir](https://elixir-lang.org/) meets 闘魂.でもよいです。

本日は、[String.replace](https://hexdocs.pm/elixir/String.html#replace/4)を説明します。

```elixir
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
```

# [String.replace](https://hexdocs.pm/elixir/String.html#replace/4)

文字列を置き換えてくれます。

それでは、[IEx](https://hexdocs.pm/iex/IEx.html)で確かめてみましょう。

```:CMD
iex
```

[IEx](https://hexdocs.pm/iex/IEx.html)が立ち上がったら、以下のプログラムを実行してみてください。
四の五の言わずに動かしてみましょう。

公式の例がすごくいいのでそのまま貼っておきます。

第一引数の文字列の中で第ニ引数のパターンに合致する文字列を第三引数の文字列で置き換えます。

```elixir
iex> String.replace("a,b,c", ",", "-")
"a-b-c"
```

第四引数には`:global`オプションを渡せます。デフォルトは`true`です。`true`の場合は全部置き換えます。`false`を指定した場合には最初だけ置き換えます。

```elixir
iex> String.replace("a,b,c", ",", "-", global: false)
"a-b,c"
```

ね :tada::tada::tada: 、最初の `,` だけ `-` に置き換わりました。

第四引数には`:global`オプションに`true`を指定してみます。

```elixir
iex> String.replace("a,b,c", ",", "-", global: true)
"a-b-c"
```

最初の実行例と同じく`,`をすべて`-`に置き換えてくれました。


# ワンポイントレッスン

第ニ引数には、文字列のリスト、正規表現、compiled patternを指定できます。
第三引数には、関数を指定することもできます。

https://hexdocs.pm/elixir/String.html#replace/4

公式ドキュメントをご参照ください。

以下、ちょっとお遊びです。

```elixir
String.replace("hmnjh", ["h", "m", "n", "j"], fn <<char>> -> <<char + 1>> end)
"inoki"
```

`"hmnjh"` => `"inoki"`の変換ができました。
猪木さんです:tada::tada::tada::tada::tada:

```elixir
iex> String.replace("镝髇", ["镝", "髇"], fn <<char::utf8>> -> <<(char + 123)::utf8>> end)
"闘魂"
```

`"镝髇"`はなにと読むのでしょう。実は、こんな言葉はありません。一文字ずつ調べると戦争（いくさ）に関係がある言葉のようです。
镝: 矢じり
髇: 鏑矢（かぶらや）。矢の一種。射放つと音が生じる。合戦の合図などに用いられた。

これら各文字に`123`を足すとなんと`"闘魂"`になるのです。
これは単なる偶然でしょうか。私にはそうはおもえません。天の配剤を感じます。

**闘魂** と言えば、 :fire: 燃える**闘魂** :fire: アントニオ猪木さんです。猪木さんといえば、ご存知「[１、２、３ダー！](https://www.youtube.com/watch?v=FSz7N5hCltw)」です。
猪木さんは、 **「私が長年夢であった　本当の　プロレスを通じて　スポーツを通じて　世界平和を　必ず実現します！（中略）おれたちは命がある　続くかぎり闘いぬきます！」** とおっしゃられています！

https://www.youtube.com/watch?v=FSz7N5hCltw







# 今日の<font color="#d00080">闘魂</font>

今日は、吉田松陰先生の言葉を紹介します。

---
<ruby>才学<rt>さいがく</rt></ruby>を<ruby>恃<rt>たの</rt></ruby>みて<ruby>少成<rt>しょうせい</rt></ruby>に安んずるは<ruby>本藩<rt>ほんぱん</rt></ruby>の<ruby>弊習<rt>へいしゅう</rt></ruby>なり。<ruby>習<rt>しゅう</rt></ruby>は必ず<ruby>風<rt>ふう</rt></ruby>となる。
---

解説は、[こちら](https://www.kyoeihome.net/blog/?p=8827)をご参照ください。




猪木さん流に言うと、「絶好調のときこそ、あえて守りに入らず攻めの気持ちを忘れない」ということです。
:book:『[アントニオ猪木　最後の闘魂](https://presidentstore.jp/item/008105.html)』:book:より引用します。


> 守りに入るということは、現状維持でよしとすること。現状に満足していたら、いつか停滞期がやってきて、そして衰退につながる。そうならないためにも、常に攻めの姿勢を持ち続けていないといけないのだ。

一言で言うと、つまりは **闘魂** です。
「闘魂」とは、 **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことだとおもいます」**  と猪木さんはおっしゃられています。
本能とも言うべきホメオスタシス（恒常性）の働きによりコンフォートゾーンからなかなか抜け出すことはできません。抜け出せないと成長はできません。
自分自身を叱咤激励して次の高みを目指す。**挑戦を繰り返し続けることによってのみ人は成長できるのです。**
遺伝子に組み込まれた「恒常性」を「**向上性** :rocket::rocket::rocket:」へと変革させるものは、 :fire:**闘魂**:fire: なのです。人間をアップデートさせるものは、**闘魂**の二字を眼目にすることです。

:book:『[アントニオ猪木　最後の闘魂](https://presidentstore.jp/item/008105.html)』:book:

みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。

https://presidentstore.jp/item/008105.html


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/be8933f5-e3e2-d5f4-1561-f65f75abdf38.png)


# さいごに

[String.replace](https://hexdocs.pm/elixir/String.html#replace/4)を説明しました。

闘魂の意味は、 **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくこと」** との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。

<font color="red">$\huge{１、２、３ ぁっダー！}$</font>


<iframe width="910" height="512" src="https://www.youtube.com/embed/AWxwmqzbOaw" title="燃える闘魂 アントニオ猪木  追悼VTR" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

https://www.youtube.com/watch?v=FSz7N5hCltw

---

https://qiita.com/torifukukaiou/items/5e96f4e9f12ec3c4b3f4

---

# Twitter

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Elixir Advent Calendar 3の20日目、ふたたび <a href="https://twitter.com/torifukukaiou?ref_src=twsrc%5Etfw">@torifukukaiou</a> さんで、Stringモジュールの第四段、String .replaceです😋<a href="https://t.co/WZj15dytYX">https://t.co/WZj15dytYX</a><br><br>どの言語でも良く使われる文字列リプレイスですが、まさかString .replaceからの闘魂繋がりは想定外だった😅</p>&mdash; piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) <a href="https://twitter.com/piacere_ex/status/1605076965442334720?ref_src=twsrc%5Etfw">December 20, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

---


<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>