Note: information on this page refers to Ceylon 1.2, not to the current release.
String
literals
A literal notation for a String
value.
Usage
A String
literal is written between paired double quotes:
String example = "This is a trivial example";
String escaping = "\"Escaping\" with a backslash";
String multiline = "Strings may
span lines";// note indentation, see below
A verbatim String
literal is written between paired triple-double quotes:
String verbatim = """<p>"Almost, but not quite, entirely unlike tea."</p>"""
Description
Escaping
Plain string literals may contain escape sequences. Backslash is used as an
escape character. The following characters must be escaped when they're
used within a plain String
literal:
- backslash,
\
, must be written as\\
- double quote,
"
, must be written as\"
- backtick,
`
, must be written as\`
In a plain String
literal, the following traditional C-style escape sequences
are also supported:
- tab,
\t
- newline,
\n
- return,
\r
- form feed,
\f
- backspace,
\b
- single quote,
\'
In contrast, verbatim String
literals do not support any escaping, so you
can use characters like "
, \
, and `
freely, with their literal
interpretation.
Unicode characters
You can use the same unicode escapes within
plain string literals as in Character
literals. Like this:
String quotation = "I think, \{#2234} I am"; // Unicode therefore symbol
Or using the Unicode character name:
String quotation = "I think, \{THEREFORE} I am";
Of course, you can also directly embed a Unicode character in a String
literal:
String quotation = "I think, ∴ I am";
But this is highly discouraged, since it causes problems when sharing source code across operating systems with different default character encodings.
Line spanning
String literals may span lines. A line break in a string literal always
results in a (Unix-style) newline character in the resulting String
,
irrespective of the platform-specific character used to encode the end
of line in the source file itself.
For example, a multiline string in a source file which uses \r\n
as line
separator (the Windows convention) will be compiled to a string which uses
\n
as line separator.
If a different convention is really required, use escaping instead of line spanning literals.
Every line of a string literal spanning multiple lines is understood to
begin at the same column. Leading whitespace is automatically stripped
from the resulting String
. For example:
String greeting = "Hello
World";
And:
String greeting = """Hello
World""";
Are both exactly equivalent to:
String greeting = "Hello\nWorld";
Interpolation
Plain strings containing two backticks, ``
, are not considered
literal strings, but string templates.
Verbatim strings do not support interpolation.
See also
-
String
literals in the Tour of Ceylon String
literals in the language specificationString
templates