Is there a way to represent a long string that doesnt have any whitespace on multiple lines in a YAML document?

Say I have the following string:

"abcdefghijklmnopqrstuvwxyz"

And I think its too long for one line in my YAML file, is there some way to split that over several lines?

>-
    abcdefghi
    jklmnopqr
    stuvwxyz

Would result in "abcdefghi jklmnopqr stuvwxyz" which is close, but it shouldn't have any spaces.


Solution 1:

Use double-quotes, and escape the newline:

"abcdefghi\
jklmnopqr\
stuvwxyz"

Solution 2:

There are some subtleties that Jesse's answer will miss.

YAML (like many programming languages) treats single and double quotes differently. Consider this document:

regexp: "\d{4}"

This will fail to parse with an error such as:

found unknown escape character while parsing a quoted scalar at line 1 column 9

Compare that to:

regexp: '\d{4}'

Which will parse correctly. In order to use backslash character inside double-quoted strings you would need to escape them, as in:

regexp: "\\d{4}"

I'd also like to highlight Steve's comment about single-quoted strings. Consider this document:

s1: "this\
  is\
  a\
  test"

s2: 'this\
  is\
  a\
  test'

When parsed, you will find that it is equivalent to:

s1: thisisatest
s2: "this\\ is\\ a\\ test"

This is a direct result of the fact that YAML treats single-quoted strings as literals, while double-quoted strings are subject to escape character expansion.