- stringはUTF-8エンコードされたbinary
- byte-sizeとcode pointについて
iex> string = "hełło"
"hełło"
# byte sizeは7。ł以外のコードポイントは0 ~ 255以内 = 1byteだけど ł は322で表現するためには2byte分必要だから
iex> byte_size string
7
# Stringの長さとしては5文字
iex> String.length string
5
# ? でcharのコードポイントを確認できる
iex> ?h
104
iex> ?ł
322
Binaries (and bitstrings)
- <<>> を使うとbinaryを定義することができる
iex> bnry = <<1,2,3,4>>
- Stringを
<>
でconcatすることは実はbinaryを <>
としているのと同意
iex> <<0, 1>> <> <<2, 3>>
<<0, 1, 2, 3>>
# なのでstringともconcatできちゃう
iex> "hełło" <> <<0>>
<<104, 101, 197, 130, 197, 130, 111, 0>>
iex> <<0, 1, x>> = <<0, 1, 2>>
<<0, 1, 2>>
iex> x
2
Char lists
- シングルクォートで囲むとstringではなく、char listとなる
iex> 'hełło'
[104, 101, 322, 322, 111]
iex> is_list 'hełło'
true
# iex上ではList内の文字がAsciiコード内であればstringのように表示される。
iex> 'hello'
'hello'
- to_string/1 と to_char_list/1 を使うと char list と string 間のコンバートができる
iex> to_char_list "hełło"
[104, 101, 322, 322, 111]
iex> to_string 'hełło'
"hełło"
# atom も文字列に変換できる
iex> to_string :hello
"hello"
# integerも同じく
iex> to_string 1
"1"