escape method
Escapes a String such that it can be used as a string literal in generated code.
quotes
specifies the type of surrounding quotes to add. Existing
occurrences of the specified quote character will be escaped.
If ascii
is true, all non-ASCII code-points will be escaped as a
Unicode literal sequence (\u{XXXXXX}
).
Calling jsonEncode on a String is similar, but escape has some notable differences:
- jsonEncode always uses surrounding double-quotes.
- jsonEncode does not escape
$
, which is used in Dart string literals for string interpolation. - jsonEncode usually does not escape non-ASCII characters.
- jsonEncode escapes a vertical tab (
\v') as
\u000b`. - If there is no canonical escape sequence for a character that needs to
be escaped (such as (
\n
,\t
, etc.), jsonEncode encodes the character as\uXXXX
(which represents a UTF-16 code unit) whereas escape uses\u{XXXXXX}
(which represents a Unicode code point).
In summary, comparing jsonEncode
to escape
(when called with
default arguments):
Input | jsonEncode |
escape |
---|---|---|
'$' | r"$" | r'$' |
'\v' | r"\u000b" | r'\v' |
'\u0000' | r"\u0000" | r'\u{0}' |
'\u2665' | r"♥" | r'\u{2665}' |
'\u{1f600}' | r"😀" | r'\u{1f600}' |
Implementation
String escape({
QuoteType quotes = QuoteType.single,
bool ascii = true,
}) =>
String.fromCharCodes(
runes.escape(quotes: quotes, ascii: ascii),
);