こんにちは!
プログラミング未経験文系出身、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.to_existing_atomとは
String.to_atom(string)
はstring
を既存のアトムに変換するか、既存のアトムが存在しない場合は例外を返します。
例
:my_atom #アトムの作成
String.to_existing_atom("my_atom")
:my_atom
既存のアトムが存在しない場合
String.to_existing_atom("not_exist")
** (ArgumentError) errors were found at the given arguments:
* 1st argument: not an already existing atom
:erlang.binary_to_existing_atom("not_exist", :utf8)
#cell:xpo7pr43vdebz6nd:1: (file)
String.to_floatとは
String.to_float(string)
は浮動小数点の文字列string
をfloat型に変換します。
例
String.to_float("1.0")
1.0
下記の例の末尾のe+2
は指数表現、すなわちこの場合は10の2乗。
String.to_float("2.2017764e+2")
220.17764
string
が浮動小数点の文字列以外の場合は例外を返す。
String.to_float("1")
** (ArgumentError) errors were found at the given arguments:
* 1st argument: not a textual representation of a float
:erlang.binary_to_float("1")
#cell:wgroqup7i7jxae2p:1: (file)
余談
string
が浮動小数点の文字列以外の場合は、Float.parse
を使用+タプルのパターンマッチを使用のこと。
{x, y} = Float.parse("1")
x
1.0
String.to_integerとは(to_integer/1)
String._integer(string)
は整数の文字列string
をInteger型に変換します。
例
String.to_integer("2")
2
string
が整数の文字列以外の場合は例外を返す。
String.to_integer("2.0")
** (ArgumentError) errors were found at the given arguments:
* 1st argument: not a textual representation of an integer
:erlang.binary_to_integer("2.0")
#cell:vvvgtwob2xv4qmuc:1: (file)
余談
string
が整数の文字列以外の場合は、Integer.parse
を使用+タプルのパターンマッチを使用のこと。
{a, b} = Integer.parse("2.0")
a
2
String.to_integerとは(to_integer/2)
String._integer(string, base)
は整数の文字列string
について、base
を基数とみなしたうえで変換します。
この関数の目的は10進数以外で表現された整数の文字列を、10進数に変換することです。
例
String.to_integer("3FF", 16) # 16進数の3FF(=10進数の1023)とみなす
1023
String.trimとは(trim/1)
String.trim(string)
はstring
の先頭と末尾にあるUnicode空白にあたる文字を全て削除した文字列を返します。
例
下記は以下の空白文字を含んでいる
-
\n
LF(Line Feed)のエスケープシーケンス -
\r
CR(Carriage return)エスケープシーケンス -
String.trim("\n abc\r ")
"abc"
String.trimとは(trim/2)
String.trim(string, to_trim)
はstring
の先頭と末尾にあるto_trim
を全て削除した文字列を返します。
例
先頭と末尾の"a"
が削除されるため" abc "
だけが残る
String.trim("a abc a", "a")
" abc "
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!1
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。2
-
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩