มี5 6 NINE (หรือ 63 * ขึ้นอยู่กับวิธีที่คุณนับ) วิธีการเขียนสตริงหลายบรรทัดใน YAML
TL; DR
โดยปกติคุณต้องการ>
:
key: >
Your long
string here.
หากคุณต้องการขึ้นบรรทัดใหม่ที่จะได้รับการเก็บรักษาไว้\n
ในสตริง (เช่น markdown ฝังตัวอยู่กับย่อหน้า) |
การใช้งาน
key: |
### Heading
* Bullet
* Points
ใช้>-
หรือ|-
แทนหากคุณไม่ต้องการให้ linebreak ต่อท้าย
หากคุณต้องการแยกบรรทัดที่อยู่ตรงกลางคำหรือพิมพ์ linebreaks อย่างแท้จริงให้\n
ใช้เครื่องหมายคำพูดคู่แทน:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML เป็นบ้า
บล็อกรูปแบบสเกลาร์ ( >
, |
)
อนุญาตให้ใช้อักขระเช่น\
และ"
ไม่ใช้ Escape และเพิ่มบรรทัดใหม่ ( \n
) ที่ส่วนท้ายของสตริง
>
สไตล์ที่พับจะลบบรรทัดใหม่หนึ่งบรรทัดภายในสตริง (แต่เพิ่มอีกบรรทัดหนึ่งที่ส่วนท้ายและแปลงบรรทัดใหม่เป็นสองบรรทัดเป็นซิงเกิ้ล):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
รูปแบบตัวอักษรเปลี่ยนทุกบรรทัดใหม่ภายในสตริงให้เป็นตัวอักษรขึ้นบรรทัดใหม่และเพิ่มอีกหนึ่งบรรทัดท้าย:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
นี่คือคำนิยามอย่างเป็นทางการจากYAML Spec 1.2
สามารถเขียนเนื้อหาสเกลาร์ในรูปแบบบล็อกโดยใช้รูปแบบตัวอักษร (ระบุโดย“ |”) ซึ่งการขึ้นบรรทัดใหม่ทั้งหมดมีความสำคัญ อีกทางเลือกหนึ่งพวกเขาสามารถเขียนด้วยสไตล์การพับ (แสดงโดย ">") ที่แต่ละบรรทัดแบ่งเป็นพับช่องว่างเว้นเสียแต่ว่ามันจะจบลงที่ว่างเปล่าหรือเส้นเยื้องมากขึ้น
รูปแบบบล็อกบล็อกตัวบ่งชี้เคี้ยว ( >-
, |-
, >+
, |+
)
คุณสามารถควบคุมการจัดการของบรรทัดใหม่สุดท้ายในสตริงและบรรทัดว่างใด ๆ ต่อท้าย ( \n\n
) โดยการเพิ่มตัวบ่งชี้บล็อก chomping ตัวละคร:
>
, |
: "คลิป": เก็บการป้อนบรรทัดเอาบรรทัดว่างต่อท้ายออก
>-
, |-
: "strip": ลบการป้อนบรรทัดลบบรรทัดว่างต่อท้าย
>+
, |+
: "Keep": เก็บการขึ้นบรรทัดใหม่, ให้ต่อท้ายบรรทัดว่าง
"กระแส" รูปแบบสเกลาร์ (
, "
, '
)
สิ่งเหล่านี้มีการ จำกัด การหลบหนีและสร้างสตริงบรรทัดเดียวที่ไม่มีอักขระบรรทัดใหม่ พวกเขาสามารถเริ่มต้นในบรรทัดเดียวกับคีย์หรือมีการขึ้นบรรทัดใหม่ก่อน
สไตล์ธรรมดา (ไม่มีการหลบหนีไม่มี#
หรือการ:
รวมกัน จำกัด จำนวนอักขระแรก):
Key: this is my very very very
long string
สไตล์ที่ยกมาสองครั้ง (\
และ"
จะต้องหลบหนีโดย\
ขึ้นบรรทัดใหม่สามารถแทรกด้วย\n
ลำดับตัวอักษรบรรทัดสามารถตัดแบ่งได้โดยไม่ต้องเว้นวรรคที่มีการต่อท้าย\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
สไตล์ที่ยกมาเดี่ยว (ตัวอักษร'
จะต้องเป็นสองเท่าไม่มีตัวอักษรพิเศษอาจมีประโยชน์สำหรับการแสดงสตริงที่ขึ้นต้นด้วยเครื่องหมายคำพูดคู่):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
สรุป
ในตารางนี้หมายถึง_
หมายถึง "อักขระขึ้นบรรทัดใหม่" ( ใน JavaScript) ยกเว้นแถว "บรรทัดใหม่ในบรรทัด" ซึ่งหมายถึงแบ็กสแลชและตัวอักษร n)space character
\n
\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 |
ตัวอย่าง
สังเกตช่องว่างต่อท้ายบนบรรทัดก่อน "ช่องว่าง"
- >
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."
]
บล็อกสไตล์ด้วยตัวบ่งชี้การเยื้อง
ในกรณีที่ข้างต้นไม่เพียงพอสำหรับคุณคุณสามารถเพิ่ม " ตัวบ่งชี้การเยื้องบล็อก " (หลังจากตัวบ่งชี้การ chomping บล็อกของคุณถ้าคุณมี)
- >8
My long string
starts over here
- |+1
This one
starts here
ภาคผนวก
หากคุณแทรกช่องว่างเพิ่มเติมที่จุดเริ่มต้นของบรรทัดที่ไม่ใช่บรรทัดแรกในรูปแบบพับแล้วจะมีการขึ้นบรรทัดใหม่ด้วยโบนัสบรรทัดใหม่ สิ่งนี้ไม่ได้เกิดขึ้นกับสไตล์การไหล:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
ฉันทำไม่ได้
*
2 รูปแบบบล็อกแต่ละแบบมีตัวบ่งชี้การ chomping บล็อกที่เป็นไปได้ 2 แบบ (หรือไม่มี) และมีตัวบ่งชี้การเยื้องที่เป็นไปได้ 9 แบบ (หรือไม่มี), 1 สไตล์ธรรมดาและ 2 สไตล์ที่ยกมา: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
บางส่วนของข้อมูลนี้ยังได้รับการสรุปที่นี่