この記事は、Elixir Advent Calendar 2023 シリーズ14 の10日目です
piacere です、ご覧いただいてありがとございます
Elixirは、データ加工が得意な言語ですが、文字列操作も独特の便利さがあり、今回は多彩な文字列抽出を紹介します
開始と終了の指定
iex> "私はElixirが大好きです" |> String.slice(2, 6)
"Elixir"
開始をマイナスで指定すると後ろからカウント
iex> "私はElixirが大好きです" |> String.slice(-5, 3)
"大好き"
レンジで指定
iex> "私はElixirが大好きです" |> String.slice(2..7)
"Elixir"
レンジの開始と終了をマイナスで指定すると後ろからカウント
iex> "私はElixirが大好きです" |> String.slice(-5..-3)
"大好き"
レンジで飛び飛びの指定
iex> "私はElixirが大好きです" |> String.slice(2..10//2)
"Eiiが好"
レンジの終了をマイナスで指定すると終わりを後ろからカウント
"私はElixirが大好きです" |> String.slice(2..-3//1)
"Elixirが大好き"
文字単位で無くバイト単位
UTF-8は1文字3バイト換算です
iex> "私はElixirが大好きです" |> binary_part(6, 5)
"Elixi"
iex> "私はElixirが大好きです" |> binary_slice(7, 5)
"lixir"
iex> "私はElixirが大好きです" |> binary_slice(7..9)
"lix"