こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はStringモジュールについて学んだことをまとめます。
目次
1.Stringモジュールで遊んでみたシリーズ① -String.at ~ String.chunk の紹介
2.Stringモジュールで遊んでみたシリーズ② -String.codepoints ~ String.ends_with? の紹介
3.Stringモジュールで遊んでみたシリーズ③ -String.equivalent? ~ String.last の紹介
4.Stringモジュールで遊んでみたシリーズ④ -String.length ~ String.next_grapheme の紹介
5.Stringモジュールで遊んでみたシリーズ⑤ -String.next_grapheme_size ~ String.printable? の紹介
6.Stringモジュールで遊んでみたシリーズ⑥ -String.replace ~ String.replace_suffix の紹介
7.Stringモジュールで遊んでみたシリーズ⑦ -String.replace_trailing ~ String.split の紹介
8.Stringモジュールで遊んでみたシリーズ⑧ -String.split_at ~ String.to_charlist の紹介
9.Stringモジュールで遊んでみたシリーズ⑨ -String.to_existing_atom ~ String.trim の紹介
10.Stringモジュールで遊んでみたシリーズ10 -String.trim_leading ~ String.valid? の紹介(本記事)
目的
Stringモジュールに含まれる関数を触って機能を理解したい
実行環境
Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.17.3
Erlang v27.0
String.trim_leadingとは(trim_leading/1)
String.trim_leading(string)
はstring
の先頭にあるUnicode空白にあたる文字を全て削除した文字列を返します。
例
下記は以下の空白文字を含んでいる
-
\n
LF(Line Feed)のエスケープシーケンス -
\r
CR(Carriage return)エスケープシーケンス -
先頭の\n
のみが削除される
String.trim_leading("\n abc\r ")
"abc\r "
String.trim_leadingとは(trim_leading/2)
String.trim(string, to_trim)
はstring
の先頭にあるto_trim
を全て削除した文字列を返します。
例
先頭の"a"
のみが削除されるため" abc a"
だけが残る
String.trim_leading("a abc a", "a")
" abc a"
String.trim_trailingとは(trim_trailing/1)
String.trim_trailing(string)
はstring
の末尾にあるUnicode空白にあたる文字を全て削除した文字列を返します。
例
下記は以下の空白文字を含んでいる
-
\n
LF(Line Feed)のエスケープシーケンス -
\r
CR(Carriage return)エスケープシーケンス -
末尾の\r
のみが削除される
String.trim_leading("\n abc\r ")
"\n abc"
String.trim_trailingとは(trim_trailing/2)
String.trim(string, to_trim)
はstring
の末尾にあるto_trim
を全て削除した文字列を返します。
例
末尾の"a"
のみが削除されるため"a abc "
だけが残る
String.trim_trailing("a abc a", "a")
"a abc "
String.upcaseとは
String.upcase(string, mode \\ :default)
はstring
の全ての文字をmode
に従って大文字に変換します。
例
String.upcase("abcd")
"ABCD"
類似の関数との比較
全て小文字に変換したい場合 → String.downcase
先頭の1文字だけ大文字に変換したい場合 → String.capitalize
String.valid?とは
String.valid?(string, algorithm \\ :default)
はstring
が有効な文字列か否かをチェックします。
例
String.valid?("a")
true
類似の関数との比較
無効な文字列を置換したい場合 → String.replace_invalid
補足:無効な文字列とは
下記の<<0xFF::8>>
はbit長を明示したバイナリの書き方です1
つまり、0xFF
(←16進数表記。10進数表記で255。2進数表記で11111111)を8ビット長
(=1バイト長)のバイナリで示すという意味です。
Elixirの文字列はUTF-8エンコードされたバイナリです。
しかし0xFF
はUTF-8で示せる範囲に含まれていません。23
したがって、<<0xFF::8>>
は無効な文字列であり、<<0xFF::8>>
を文字列結合した"asd" <> <<0xFF::8>>
も無効な文字列です。
String.valid?("asd" <> <<0xFF::8>>)
false
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!4
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。5
-
https://qiita.com/kikuyuta/items/e200a6208013f38333de#%E3%83%93%E3%83%83%E3%83%88%E5%88%97-bitstring ↩
-
https://qiita.com/nekotadon/items/5d0f0fc7c58d088eec99#utf-8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 ↩
-
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩