Có 5 6 NINE (hoặc 63 *, tùy thuộc vào cách bạn đếm) các cách khác nhau để viết chuỗi nhiều dòng trong YAML.
TL; DR
Thông thường, bạn muốn >
:
key: >
Your long
string here.
Nếu bạn muốn ngắt dòng được bảo toàn như \n
trong chuỗi (ví dụ: đánh dấu nhúng với các đoạn văn), hãy sử dụng |
.
key: |
### Heading
* Bullet
* Points
Sử dụng >-
hoặc |-
thay vào đó nếu bạn không muốn ngắt dòng được nối vào cuối.
Nếu bạn cần phân chia các dòng ở giữa các từ hoặc gõ theo dòng theo nghĩa đen \n
, hãy sử dụng dấu ngoặc kép thay thế:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML thật điên rồ.
Khối kiểu vô hướng ( >
, |
)
Những thứ này cho phép các ký tự như \
và "
không thoát, và thêm một dòng mới ( \n
) vào cuối chuỗi của bạn.
>
Kiểu gấp sẽ loại bỏ các dòng mới trong chuỗi (nhưng thêm một dòng ở cuối và chuyển đổi hai dòng mới thành số đơn):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Kiểu chữ biến mọi dòng mới trong chuỗi thành một dòng mới theo nghĩa đen và thêm một dòng ở cuối:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Đây là định nghĩa chính thức từ YAML Spec 1.2
Nội dung vô hướng có thể được viết theo ký hiệu khối, sử dụng kiểu chữ (được biểu thị bởi dòng | |) trong đó tất cả các ngắt dòng đều có ý nghĩa. Ngoài ra, chúng có thể được viết với kiểu gấp (được biểu thị bằng cách>>) trong đó mỗi ngắt dòng được gấp lại thành một khoảng trắng trừ khi kết thúc một dòng trống hoặc một dòng thụt vào nhiều hơn.
Khối phong cách với khối chỉ nhai ( >-
, |-
, >+
, |+
)
Bạn có thể kiểm soát việc xử lý dòng mới cuối cùng trong chuỗi và bất kỳ dòng trống nào ( \n\n
) bằng cách thêm một ký tự chỉ báo khối chomping khối :
>
, |
: "clip": giữ nguồn cấp dữ liệu, xóa các dòng trống ở cuối.
>-
, |-
: "dải": xóa nguồn cấp dữ liệu, xóa các dòng trống ở cuối.
>+
, |+
: "keep": giữ nguồn cấp dữ liệu, tiếp tục theo dõi các dòng trống.
"Flow" phong cách vô hướng (
, "
, '
)
Chúng có giới hạn thoát và xây dựng một chuỗi đơn không có ký tự dòng mới. Chúng có thể bắt đầu trên cùng một dòng với khóa hoặc với các dòng mới bổ sung trước.
kiểu đơn giản (không thoát, không#
hoặc:
kết hợp, giới hạn ở ký tự đầu tiên):
Key: this is my very very very
long string
kiểu trích dẫn kép (\
và"
phải được thoát theo\
, các dòng mới có thể được chèn bằng một chuỗi theo nghĩa đen\n
, các dòng có thể được nối mà không có khoảng trắng với dấu\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
kiểu trích dẫn đơn (nghĩa đen'
phải được nhân đôi, không có ký tự đặc biệt, có thể hữu ích để thể hiện chuỗi bắt đầu bằng dấu ngoặc kép):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Tóm lược
Trong bảng này, _
có nghĩa là space character
. \n
có nghĩa là "ký tự dòng mới" ( \n
trong JavaScript), ngoại trừ hàng "dòng mới trong dòng", trong đó có nghĩa đen là dấu gạch chéo ngược và 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 |
Ví dụ
Lưu ý các dấu cách trên dòng trước "khoảng trắng".
- >
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."
]
Kiểu khối với các chỉ số thụt
Chỉ trong trường hợp ở trên không đủ cho bạn, bạn có thể thêm " chỉ báo thụt khối " (sau chỉ báo nhai khối của bạn, nếu bạn có):
- >8
My long string
starts over here
- |+1
This one
starts here
Phụ lục
Nếu bạn chèn thêm khoảng trắng ở đầu các dòng không phải đầu tiên theo kiểu Folded, chúng sẽ được giữ lại, với một dòng mới thưởng. Điều này không xảy ra với các kiểu dòng chảy:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Tôi thậm chí không thể.
*
2 kiểu khối, mỗi kiểu có 2 chỉ số nhai khối có thể (hoặc không có) và với 9 chỉ báo thụt đầu dòng có thể (hoặc không có), 1 kiểu đơn giản và 2 kiểu được trích dẫn: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Một số thông tin này cũng đã được tóm tắt ở đây .