Stringモジュールで遊んでみたシリーズ② -String.codepoints ~ String.ends_with? の紹介

こんにちは！
プログラミング未経験文系出身、Elixirの国に迷い込んだ？！見習いアルケミストのaliceと申します。
今回はStringモジュールについて学んだことをまとめます。

# 目次
1.[Stringモジュールで遊んでみたシリーズ① -String.at ~ String.chunk の紹介](https://qiita.com/Alicesky2127/items/47fffc38711d7369beee)
2.Stringモジュールで遊んでみたシリーズ② -String.codepoints ~ String.ends_with? の紹介(本記事)
3.[Stringモジュールで遊んでみたシリーズ③ -String.equivalent? ~ String.last の紹介](https://qiita.com/Alicesky2127/items/37aa8e62e8e1d5fef3b6)
4.[Stringモジュールで遊んでみたシリーズ④ -String.length ~ String.next_grapheme の紹介](https://qiita.com/Alicesky2127/items/e3fa2092a67cb9f6ec9c)
5.[Stringモジュールで遊んでみたシリーズ⑤ -String.next_grapheme_size ~ String.printable? の紹介](https://qiita.com/Alicesky2127/items/a315148e966c9f103a7c)
6.[Stringモジュールで遊んでみたシリーズ⑥ -String.replace ~ String.replace_suffix の紹介](https://qiita.com/Alicesky2127/items/94a77afe270587ed21a9)
7.[Stringモジュールで遊んでみたシリーズ⑦ -String.replace_trailing ~ String.split の紹介](https://qiita.com/Alicesky2127/items/1a8e9c92fa758d0b1337)
8.[Stringモジュールで遊んでみたシリーズ⑧ -String.split_at ~ String.to_charlist の紹介](https://qiita.com/Alicesky2127/items/40e74cd622653796df5c)
9.[Stringモジュールで遊んでみたシリーズ⑨ -String.to_existing_atom ~ String.trim の紹介](https://qiita.com/Alicesky2127/items/9bf2b1effc3b68819ac2)
10.[Stringモジュールで遊んでみたシリーズ10 -String.trim_leading ~ String.valid? の紹介](https://qiita.com/Alicesky2127/items/b8310a3f5fc5b040ca78)

# 目的 
Stringモジュールに含まれる関数を触って機能を理解したい

https://hexdocs.pm/elixir/String.html

## 実行環境
Windows 11 ＋ WSL2 ＋ Ubuntu 22.04
Elixir v1.17.3
Erlang v27.0


# String.codepointsとは
下記をご参照ください。

https://qiita.com/Alicesky2127/items/8dcb4612dd3f6ba6f59b#stringcodepoints1%E3%81%AFutf-8%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%94%E3%81%A8%E3%81%AB%E5%88%86%E5%89%B2


# String.contains?とは
下記をご参照ください。

https://qiita.com/Alicesky2127/items/ca81efcf8cca6907364a#stringcontains%E3%81%A8%E3%81%AF




# String.downcaseとは
`String.downcase(string, mode \\ :default)`は`string`の全ての文字を`mode`に従って小文字に変換します。
## 例
```diff_elixir:iex
String.downcase("ABCD")
```
```
"abcd"
```

# String.duplicateとは
`String.duplicate.(subject, n)`は`string`の全ての文字を`n`回繰り返した文字列に変換します。
## 例
```diff_elixir:iex
String.duplicate("abc", 0)
```
```
""
```

```diff_elixir:iex
String.duplicate("abc", 2)
```
```
"abcabc"
```


# String.ends_with?とは
`String.ends_with?(string, suffix)`は`string`が`suffix`で終わるか否かをチェックします。
## 例
`suffix`が1パターンの場合
```diff_elixir:iex
String.ends_with?("language", "age")
```
```
true
```

`suffix`が2パターン以上の場合。
`suffix`のいずれかのパターンとマッチしていればtrueになることが分かります。
```diff_elixir:iex
String.ends_with?("language", ["youth", "elixir"])
```
```
false
```

```diff_elixir:iex
String.ends_with?("language", ["youth", "elixir", "e"])
```
```
true
```

`suffix`に空文字が含まれる場合必ずtrueになります。
```diff_elixir:iex
String.ends_with?("language", ["youth", "elixir", ""])
```
```
true
```

# ～Elixirの国のご案内～
↓Elixirって何ぞや？と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます:laughing::sparkles::sparkles:

https://qiita.com/piacerex/items/09876caa1e17169ec5e1

↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ！私もエンジニア未経験から学習中です。

https://elixir-lang.info/topics/entry_column


↓[We Are The Alchemists, my friends!:bouquet:](https://qiita.com/torifukukaiou/items/6bcd5bbb80df9e594e9e "Awesome-san's Awesome article")[^10]
Elixirコミュニティは本当に優しくて温かい人たちばかり！
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。[^11]


https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian




[^10]: @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。


[^11]: @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中！