闘魂Elixir ── 19. String.start_with?, String.ends_with?

<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.starts_with?/2](https://hexdocs.pm/elixir/String.html#starts_with?/2)と[String.ends_with?/2](https://hexdocs.pm/elixir/String.html#ends_with?/2)を説明します。

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

# [String.starts_with?/2](https://hexdocs.pm/elixir/String.html#starts_with?/2)

文字列が`prefix`で始まるかどうかを判定してくれます。

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

```:CMD
iex
```

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

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

第一引数の文字列が、第二引数の`prefix`で始まっていれば`true`が返ります。


```elixir
iex> String.starts_with?("elixir", "eli")
true
```

第二引数にはリストを渡すこともできます。

```elixir
iex> String.starts_with?("elixir", ["erlang", "elixir"])
true
iex> String.starts_with?("elixir", ["erlang", "ruby"])
false
```

# [String.ends_with?/2](https://hexdocs.pm/elixir/String.html#ends_with?/2)

文字列が`suffix`で終わるかどうかを判定してくれます。
さきほど説明した[String.starts_with?/2](https://hexdocs.pm/elixir/String.html#starts_with?/2)の親戚です。もしかしたら双子かもしれません。

```elixir
iex> String.ends_with?("language", "age")
true
```

第二引数にはリストを渡すこともできます。

```elixir
iex> String.ends_with?("language", ["youth", "age"])
true
iex> String.ends_with?("language", ["youth", "elixir"])
false
```












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

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

---
<ruby>凡<rt>およ</rt></ruby>そ<ruby>事<rt>こと</rt></ruby><ruby>人情<rt>にんじょう</rt></ruby>に<ruby>原<rt>もと</rt></ruby>づかずんば何ぞ成るあらん。
---

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




猪木さん流に言うと、「**プロの価値というのは、ギャラを1億円取ったから凄いとか、そういうもんじゃない。重要なのは自分が求められているものをすばやく察知して、行動で応えるということだ**」ということです。
:book:『[アントニオ猪木　最後の闘魂](https://presidentstore.jp/item/008105.html)』:book:より引用します。


> どんなスポーツでも、プロならば高い技術レベルを持つことは当然だ。ただ、個人的にはそうした技術よりも、プロとしての使命感を持つ人間こそが、どの世界にも必要だとおもっている。（中略）チャンスは誰にでもいちどは巡ってくる。それを掴めるかどうかは自分次第だ。いつそのときが来てもいいように、常に闘える状態でいることもプロとしての務めだ。世間やファンはなにを求めているのか？　そのニーズを察知することができないヤツは、いくら才能があっても、開花しないまま埋もれていってしまうだろう。後先を考えるよりも、まずは行動に移すことが大事。いつもいっていることだけど、やっぱり、「迷わず行けよ」なのだ。

一言で言うと、つまりは **闘魂** です。
「闘魂」とは、 **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことだとおもいます」**  と猪木さんはおっしゃられています。「ファンが振り向いてくれない」と愚痴をこぼすのではなく、自分の行動により「ファンを振り向かせる」のです。まわりのせいにしないのです。自分の行動へと昇華させ、実践断行を繰り返すのです。

: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.starts_with?/2](https://hexdocs.pm/elixir/String.html#starts_with?/2)と[String.ends_with?/2](https://hexdocs.pm/elixir/String.html#ends_with?/2)を説明しました。

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

<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の19日目、毎度お馴染み <a href="https://twitter.com/torifukukaiou?ref_src=twsrc%5Etfw">@torifukukaiou</a> さんで、Stringモジュールの第三段、String .start_with?と、String ends_with?です😌<a href="https://t.co/IDRdSvYWmk">https://t.co/IDRdSvYWmk</a><br><br>正規表現を使わなくても、前方検索や後方検索を実装でき、複数パターンも指定可能なので、けっこう便利な関数達です😜</p>&mdash; piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) <a href="https://twitter.com/piacere_ex/status/1605076166490353664?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>