Ada 5 6 SEMBILAN (atau 63 *, tergantung bagaimana Anda menghitung) berbagai cara untuk menulis string multi-line dalam YAML.
TL; DR
Biasanya, Anda ingin >
:
key: >
Your long
string here.
Jika Anda ingin linebreak dipertahankan seperti \n
pada string (misalnya, penurunan harga dengan paragraf), gunakan |
.
key: |
### Heading
* Bullet
* Points
Gunakan >-
atau |-
sebagai gantinya jika Anda tidak ingin linebreak ditambahkan pada bagian akhir.
Jika Anda perlu memecah garis di tengah kata atau mengetik linebreaks secara harfiah \n
, gunakan tanda kutip ganda sebagai gantinya:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML gila.
Blokir gaya skalar ( >
, |
)
Ini memungkinkan karakter seperti \
dan "
tanpa melarikan diri, dan menambahkan baris baru ( \n
) ke akhir string Anda.
>
Gaya yang dilipat menghapus baris baru dalam string (tetapi menambahkan satu di akhir, dan mengubah baris ganda menjadi tunggal):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Gaya literal mengubah setiap baris baru dalam string menjadi baris baru literal, dan menambahkan satu di akhir:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Berikut definisi resmi dari YAML Spec 1.2
Konten skalar dapat ditulis dalam notasi blok, menggunakan gaya literal (ditunjukkan oleh "|") di mana semua jeda baris signifikan. Atau, mereka dapat ditulis dengan gaya terlipat (dilambangkan dengan ">") di mana setiap garis putus dilipat ke suatu ruang kecuali itu berakhir dengan baris yang kosong atau lebih berlekuk.
Blok gaya dengan indikator mengunyah blok ( >-
, |-
, >+
, |+
)
Anda dapat mengontrol penanganan baris baru akhir dalam string, dan setiap garis kosong trailing ( \n\n
) dengan menambahkan karakter blok pengejar :
>
, |
: "clip": pertahankan feed baris, hapus baris trailing blank.
>-
, |-
: "strip": hapus feed baris, hapus baris kosong yang tertinggal.
>+
, |+
: "keep": pertahankan feed baris, tetap ikuti baris kosong.
"Arus" gaya skalar (
, "
, '
)
Ini memiliki pelarian yang terbatas, dan membuat string baris tunggal tanpa karakter baris baru. Mereka dapat mulai pada baris yang sama dengan kunci, atau dengan baris baru tambahan terlebih dahulu.
gaya polos (tidak ada pelarian, tidak ada#
atau:
kombinasi, batas karakter pertama):
Key: this is my very very very
long string
gaya kutipan ganda (\
dan"
harus diloloskan oleh\
, baris baru dapat disisipkan dengan\n
urutanliteral, garis dapat digabungkan tanpa spasi dengan trailing\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
gaya kutipan tunggal (literal'
harus digandakan, tidak ada karakter khusus, mungkin berguna untuk mengekspresikan string yang dimulai dengan tanda kutip ganda):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Ringkasan
Dalam tabel ini, _
berarti space character
. \n
berarti "karakter baris baru" ( \n
dalam JavaScript), kecuali untuk baris "baris baru in-line", di mana secara harfiah berarti garis miring terbalik dan n).
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
Trailing spaces | Kept | Kept | | | | Kept | Kept | Kept | Kept
Single newline => | _ | \n | _ | _ | _ | _ | _ | \n | \n
Double newline => | \n | \n\n | \n | \n | \n | \n | \n | \n\n | \n\n
Final newline => | \n | \n | | | | | \n | | \n
Final dbl nl's => | | | | | | | Kept | | Kept
In-line newlines | No | No | No | \n | No | No | No | No | No
Spaceless newlines| No | No | No | \ | No | No | No | No | No
Single quote | ' | ' | ' | ' | '' | ' | ' | ' | '
Double quote | " | " | " | \" | " | " | " | " | "
Backslash | \ | \ | \ | \\ | \ | \ | \ | \ | \
" #", ": " | Ok | Ok | No | Ok | Ok | Ok | Ok | Ok | Ok
Can start on same | No | No | Yes | Yes | Yes | No | No | No | No
line as key |
Contohnya
Perhatikan spasi tambahan pada baris sebelum "spasi".
- >
very "long"
'string' with
paragraph gap, \n and
spaces.
- |
very "long"
'string' with
paragraph gap, \n and
spaces.
- very "long"
'string' with
paragraph gap, \n and
spaces.
- "very \"long\"
'string' with
paragraph gap, \n and
s\
p\
a\
c\
e\
s."
- 'very "long"
''string'' with
paragraph gap, \n and
spaces.'
- >-
very "long"
'string' with
paragraph gap, \n and
spaces.
[
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.\n",
"very \"long\"\n'string' with\n\nparagraph gap, \\n and \nspaces.\n",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces."
]
Blokir gaya dengan indikator lekukan
Untuk berjaga-jaga jika hal di atas tidak cukup untuk Anda, Anda dapat menambahkan " indikator indentasi blok " (setelah indikator blok pengompakan, jika ada):
- >8
My long string
starts over here
- |+1
This one
starts here
Tambahan
Jika Anda memasukkan spasi tambahan di awal baris yang tidak pertama dalam gaya Dilipat, mereka akan disimpan, dengan bonus baris baru. Ini tidak terjadi dengan aliran gaya:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Saya tidak bisa.
*
2 gaya blok, masing-masing dengan 2 indikator blok chomping (atau tidak ada), dan dengan 9 indikator indentasi yang mungkin (atau tidak ada), 1 gaya polos dan 2 gaya kutipan: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Beberapa informasi ini juga telah dirangkum di sini .