5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElixirAdvent Calendar 2024

Day 19

Stringモジュールで遊んでみたシリーズ⑨ -String.to_existing_atom ~ String.trim の紹介

Last updated at Posted at 2024-12-14

こんにちは!
プログラミング未経験文系出身、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を既存のアトムに変換するか、既存のアトムが存在しない場合は例外を返します。

iex
:my_atom #アトムの作成
String.to_existing_atom("my_atom")
:my_atom

既存のアトムが存在しない場合

iex
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型に変換します。

iex
String.to_float("1.0")
1.0

下記の例の末尾のe+2は指数表現、すなわちこの場合は10の2乗。

iex
String.to_float("2.2017764e+2")
220.17764

stringが浮動小数点の文字列以外の場合は例外を返す。

iex
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を使用+タプルのパターンマッチを使用のこと。

iex
{x, y} = Float.parse("1")
x
1.0

String.to_integerとは(to_integer/1)

String._integer(string)は整数の文字列stringをInteger型に変換します。

iex
String.to_integer("2")
2

stringが整数の文字列以外の場合は例外を返す。

iex
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を使用+タプルのパターンマッチを使用のこと。

iex
{a, b} = Integer.parse("2.0")
a
2

String.to_integerとは(to_integer/2)

String._integer(string, base)は整数の文字列stringについて、baseを基数とみなしたうえで変換します。
この関数の目的は10進数以外で表現された整数の文字列を、10進数に変換することです。

iex
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)エスケープシーケンス
  • 半角スペース
iex
String.trim("\n abc\r  ")
"abc"

String.trimとは(trim/2)

String.trim(string, to_trim)stringの先頭と末尾にあるto_trimを全て削除した文字列を返します。

先頭と末尾の"a"が削除されるため" abc "だけが残る

iex
String.trim("a  abc  a", "a")
"  abc  "

~Elixirの国のご案内~

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

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

We Are The Alchemists, my friends!:bouquet:1
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。2

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

  2. @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?