Strings
Strings in Elixir are inserted between double quotes, and they are encoded in UTF-8:
iex> "hellö"
"hellö"
Note: if you are running on Windows, there is a chance your terminal does not use UTF-8 by default. You can change the encoding of your current session by running
chcp 65001
before entering IEx.
Elixir also supports string interpolation:
iex> "hellö #{:world}"
"hellö world"
Strings can have line breaks in them or introduce them using escape sequences:
iex> "hello
...> world"
"hello\nworld"
iex> "hello\nworld"
"hello\nworld"
You can print a string using the IO.puts/1
function from the IO
module:
iex> IO.puts "hello\nworld"
hello
world
:ok
Notice the IO.puts/1
function returns the atom :ok
as result after printing.
Strings in Elixir are represented internally by binaries which are sequences of bytes:
iex> is_binary("hellö")
true
We can also get the number of bytes in a string:
iex> byte_size("hellö")
6
Notice the number of bytes in that string is 6, even though it has 5 characters. That’s because the character “ö” takes 2 bytes to be represented in UTF-8. We can get the actual length of the string, based on the number of characters, by using the String.length/1
function:
iex> String.length("hellö")
5
The String module contains a bunch of functions that operate on strings as defined in the Unicode standard:
iex> String.upcase("hellö")
"HELLÖ"