Double-Quoted Strings Are Binaries

Whereas single-quoted strings are stored as char lists, the contents of a double-quoted string (dqs) are stored as a consecutive sequence of bytes in UTF-8 encoding. Clearly this is more efficient in terms of memory and certain forms of access, but it does have two implications.

First, because UTF-8 characters can take more than a single byte to represent, the size of the binary is not necessarily the length of the string.

 iex>​ dqs = ​"​​∂x/∂y"
 "∂x/∂y"
 iex>​ String.length dqs
 5
 iex>​ byte_size dqs
 9
 iex>​ String.at(dqs, 0)
 "∂"
 iex>​ String.codepoints(dqs)
 ["∂", "x", "/", "∂", "y"]
 iex>​ String.split(dqs, ​"​​/"​)
 ["∂x", "∂y"]

Second, because you’re no longer using lists, you need to learn ...

Get Programming Elixir 1.3 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.