Want to learn?




In Elixir there are two types of "strings":

  • double-quoted strings: "hello",

  • single-quoted strings: 'hello'.

These are two different types and values. To prove that let's compare them:

iex> "hi" === 'hi'
iex> "hi" == 'hi'

By convention, in Elixir, double-quoted version is called string and single-quoted character list.

String literals similarities

You already know that string and character list are two different things. There are however some similarities:

  • both are UTF-8 encoded binary,

  • they may contain escape sequences (escape characters list),

  • both allow interpolation.

Character list

How exactly is character list different from a string? On a low level, single-quoted strings are represented as a list of integers values, each value corresponding to a codepoint in the string. Here is a proof that we should treat it as a list:

iex> is_list 'hello'
iex> is_list "hello"

Furthermore, if IEx believes each number in the list is a printable character, it will print it as a character list:

iex> [104, 101, 108, 108, 111]

If you want to operate on a string as a list, you should consider using the single-quoted version.


You can declare both strings and char lists with sigils:

  • strings

    iex> ~s(this is a string with "double" quotes, not 'single' ones)
    "this is a string with \"double\" quotes, not 'single' ones"
  • char lists

    iex> ~c(this is a char list containing 'single quotes')
    'this is a char list containing \'single quotes\''

String operators


You can interpolate a value inside of a string with #{...}:

iex> min_age = 18
iex> current_age = 16
iex> "In #{18 - 16} years you will be an adult!"
"In 2 years you will be an adult!"


You can concatenate two string with <> operator:

iex> "Hello " <> "world"
"Hello world"

Start a project with your dedicated software house


Contact us

* Required fields

Elo Mordo!Elo Mordo!