ฉันจะแบ่งสตริงผ่านหลายบรรทัดได้อย่างไร


1538

ใน YAML ฉันมีสตริงที่ยาวมาก ฉันต้องการเก็บไว้ในมุมมอง 80 (หรือดังนั้น) ของการแก้ไขของฉันดังนั้นฉันต้องการที่จะทำลายสตริง ไวยากรณ์ของสิ่งนี้คืออะไร

กล่าวอีกนัยหนึ่งฉันมีสิ่งนี้:

Key: 'this is my very very very very very very long string'

และฉันต้องการที่จะมี (หรืออะไรบางอย่างกับผลกระทบนี้):

Key: 'this is my very very very ' +
     'long string'

ฉันต้องการใช้เครื่องหมายคำพูดด้านบนดังนั้นฉันไม่จำเป็นต้องหลบหนีสิ่งใด ๆ ภายในสตริง

คำตอบ:


979

ใช้สไตล์พับ yaml การแบ่งบรรทัดแต่ละครั้งจะถูกแทนที่ด้วยช่องว่าง การเยื้องในแต่ละบรรทัดจะถูกละเว้น ตัวแบ่งบรรทัดจะถูกแทรกในตอนท้าย

Key: >
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  with only a single carriage return appended to the end.

http://symfony.com/doc/current/components/yaml/yaml_format.html

คุณสามารถใช้ "ตัวบ่งชี้การ chomping บล็อก" เพื่อกำจัดตัวแบ่งบรรทัดต่อท้ายดังนี้:

Key: >-
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  with NO carriage returns.

มีเครื่องมือควบคุมอื่น ๆ ที่มีอยู่เช่นกัน (สำหรับการควบคุมการเยื้องตัวอย่าง)

ดูhttps://yaml-multiline.info/


ขอขอบคุณ แต่คุณไม่สามารถรวมไวยากรณ์นี้ในเครื่องหมายคำพูดได้ดูเหมือน: เครื่องหมายคำพูดจะปรากฏเป็นตัวอักษรในสตริงผลลัพธ์
jjkparker

ยังไงก็ตามการคืนค่าขนส่งจะถูกเพิ่มทันทีหลังจากสิ้นสุดการแปลในแอพของฉัน ด้วยวิธีนี้ Javascript มองว่ามันเป็นหลายบรรทัดและล้มเหลว {{- 'key'|trans -}}ไม่ทำงานเช่นกัน
Rvanlaak

คุณจะได้รับผลกระทบนี้เช่นเดียวกับค่าในรายการได้อย่างไร
มิคาอิล

การขึ้นบรรทัดใหม่แต่ละครั้งจะถูกแทนที่ด้วยช่องว่างหรือเพียงแค่ลบออก?
Steve

2
การขึ้นบรรทัดใหม่แต่ละครั้งจะถูกแทนที่ด้วยช่องว่าง <- แต่การแบ่งบรรทัดสองครั้งจะเป็นการแบ่งบรรทัด
Jean Jordaan

3351

มี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

บางส่วนของข้อมูลนี้ยังได้รับการสรุปที่นี่


28
ในบรรดา 63 ไวยากรณ์คุณคิดว่ามีหนึ่งเดียวที่ช่วยให้คุณสามารถสะกดสตริงหลายบรรทัดที่ไม่ควรมีการขึ้นบรรทัดใหม่หรือช่องว่างหรือไม่? ฉันหมายถึงสิ่งที่จะเขียน"..." + "..."ในภาษาโปรแกรมส่วนใหญ่หรือแบ็กสแลชก่อนขึ้นบรรทัดใหม่ใน Bash
Tobia

23
@epoluan ฉันลองใช้ชุดค่าผสมที่เป็นไปได้ทั้งหมดและพบชุดค่าผสมเดียวที่อนุญาตให้มีการต่อข้อมูลแบบไม่มีเว้นวรรค: ใส่เครื่องหมายคำพูดคู่รอบสตริงและแบ็กสแลชก่อนบรรทัดใหม่ (และย่อหน้า) ตัวอย่าง: ข้อมูล: text / plain; base64, dGVzdDogImZvb1wKICBiYXIiCg ==
Tobia

42
@wvxvw ตรงกันข้ามฉันคิดว่า YAML เป็นรูปแบบที่เลวร้ายที่สุดสำหรับกรณีการใช้งานทั่วไป (เช่นไฟล์กำหนดค่า) ไม่น้อยเพราะคนส่วนใหญ่ถูกดึงเข้ามาด้วยความเรียบง่ายที่ชัดเจนเท่านั้นที่จะตระหนักในภายหลังว่ามันเป็นรูปแบบที่ซับซ้อนมาก YAML ทำให้สิ่งที่ไม่ถูกต้องมีลักษณะที่เหมาะสม - ตัวอย่างเช่นลำไส้ใหญ่ไม่มีอันตราย:ภายในสตริงหนึ่งในอาร์เรย์สตริงทำให้ YAML ตีความมันเป็นอาร์เรย์ของวัตถุ มันละเมิดหลักการของความประหลาดใจไม่น้อยกว่า
Vicky Chijwani

20
มีคนสร้างเว็บไซต์เกี่ยวกับหัวข้อนี้: yaml-multiline.info @SteveBennett ㄹในกรณีที่คุณไม่ทราบให้ตรวจสอบส่วนท้ายของหน้านั้น
udondan

38
ยังอีกไวยากรณ์สตริงหลายสาย
xdhmoore

186

เพื่อรักษาบรรทัดใหม่ใช้|ตัวอย่างเช่น:

|
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  with newlines preserved.

ถูกแปลเป็น "นี่เป็นประโยคที่ยาวมาก‌ \ nที่ครอบคลุมหลายบรรทัดใน YAML‌ \ nแต่จะแสดงเป็นสตริง‌ \ nด้วยการขึ้นบรรทัดใหม่ไว้\ n "


ดูเหมือนว่าจะทำงานได้ดีสำหรับฉันด้วยสองบรรทัด แต่ไม่ใช่ด้วยสามบรรทัด?
cboettig

ขอบคุณทำงานได้ดีเหมือนที่คุณพูด ด้วยเหตุผลบางอย่างในส่วนหัว yaml ของ Pandoc ฉันจำเป็นต้องทำซ้ำ|ในแต่ละบรรทัดด้วยเหตุผลที่ไม่ชัดเจนสำหรับฉัน: groups.google.com/forum/#!topic/pandoc-discuss/xuqEmhWgf9A
cboettig

1
ตัวอย่างนี้ไม่แปลงเป็นบรรทัดใหม่ในราง 4!
Rubytastic

ไม่ใช่เรื่องจริงที่ว่าถ้าฉันเขียน: - field1: | หนึ่งสอง - field1: | สามสำหรับ 'ฉันได้รับ: หนึ่ง \ n สอง \ n และสาม \ n สำหรับ? ฉันต้องการมุม \ n หลังจาก 2 ไม่อยู่ที่นั่น ...
Alain1405

เมื่อใช้หลายcatบรรทัดพร้อมตัวคั่นสิ่งนี้จะทำให้ช่องว่างนำหน้า (ซึ่งจำเป็นสำหรับ YAML) ถูกเพิ่มไปยังเอาต์พุต
Karl Richter

109

1. การบล็อกสัญลักษณ์ (ธรรมดา, ลักษณะการไหล, สเกลาร์): การ ขึ้นบรรทัดใหม่กลายเป็นช่องว่างและการขึ้นบรรทัดใหม่หลังจากบล็อกถูกลบ

---
# Note: It has 1 new line after the string
content:
    Arbitrary free text
    over multiple lines stopping
    after indentation changes...

...

JSON ที่เทียบเท่า

{
 "content": "Arbitrary free text over multiple lines stopping after indentation changes..."
}

2. Scalar Block Literal: Scalar Block Literal | จะรวมถึงการขึ้นบรรทัดใหม่และช่องว่างต่อท้าย แต่ลบออกเป็นพิเศษ

ขึ้นบรรทัดใหม่หลังจากบล็อก

---
# After string we have 2 spaces and 2 new lines
content1: |
 Arbitrary free text
 over "multiple lines" stopping
 after indentation changes...  


...

JSON ที่เทียบเท่า

{
 "content1": "Arbitrary free text\nover \"multiple lines\" stopping\nafter indentation changes...  \n"
}

3. + ตัวบ่งชี้ที่มี Scalar ตัวอักษรบล็อก:ขึ้นบรรทัดใหม่พิเศษหลังจากบล็อก

---
# After string we have 2 new lines
plain: |+
 This unquoted scalar
 spans many lines.


...

JSON ที่เทียบเท่า

{
 "plain": "This unquoted scalar\nspans many lines.\n\n\n"
}

4. - ตัวบ่งชี้ที่มี Scalar ตัวอักษรบล็อก: -หมายความว่าบรรทัดใหม่ที่ท้ายบรรทัดจะถูกลบออก

---
# After string we have 2 new lines
plain: |-
 This unquoted scalar
 spans many lines.


...

JSON ที่เทียบเท่า

{
 "plain": "This unquoted scalar\nspans many lines."
}

5. สเกลาร์บล็อกแบบพับได้ (>):

จะพับขึ้นบรรทัดใหม่ไปยังช่องว่างและ แต่ลบบรรทัดใหม่พิเศษหลังจากบล็อก

---
folded_newlines: >
 this is really a
 single line of text
 despite appearances


...

JSON ที่เทียบเท่า

{
 "fold_newlines": "this is really a single line of text despite appearances\n"
}

คุณสามารถเยี่ยมชมบล็อกของฉันได้มากขึ้น


คุณตั้งใจเช่น # 4 เพื่อใช้ "| -" หลังเครื่องหมายจุดคู่หรือไม่ นอกจากนี้คุณสามารถทำเครื่องหมายสิ้นสุดของเครื่องหมาย "---" ได้ที่นี่เนื่องจากคุณแสดงเอกสารเพียงฉบับเดียว เครื่องหมายจุดสิ้นสุดของเอกสารมีประโยชน์ในการเน้นช่องว่างต่อท้ายในเอกสาร นอกเหนือจากนั้นแม้ว่าไม่จำเป็นต้องใช้เอกสารที่ชัดเจน
seh

ขอบคุณสำหรับการชี้ให้เห็น นั่นคือการพิมพ์ผิด ได้แก้ไขแล้วว่า ฉันได้ให้เครื่องหมายเริ่มต้นและจุดสิ้นสุดเพื่อให้ทุกคนสามารถเห็นบรรทัดใหม่หลังจากสตริง
Arayan Singh เมื่อ

Nr.1 ถูกอธิบายว่าเป็นแบบสเกลาร์แบบธรรมดาในข้อมูลจำเพาะของ YAML การเรียกมันว่าสไตล์บล็อกทำให้เข้าใจผิด
Anthon

เปลี่ยน Nr.1 ​​เป็นแบบสเกลาร์ธรรมดาแบบไหล
Arayan Singh เมื่อ

42

คุณอาจไม่เชื่อ แต่ YAML สามารถทำปุ่มหลายสายได้เช่นกัน:

?
 >
 multi
 line
 key
:
  value

3
ต้องการคำอธิบาย (อะไรคือ "?")
ilyaigpetrov

@ilyaigpetrov ตรงตามที่เขียนคีย์ "หลายบรรทัด" โดยปกติแล้วคุณทำสิ่งต่าง ๆ เช่นkey:valueแต่ถ้าคีย์ของคุณมีขึ้นบรรทัดใหม่คุณสามารถทำตามที่อธิบายไว้ข้างต้น
goFrendiAsgard

4
ตัวอย่างของกรณีการใช้งานจริงสำหรับเรื่องนี้?
Richard-Degenne

1
@ilyaigpetrov the ?เป็นตัวบ่งชี้คีย์ (เช่นเดียวกับในการทำแผนที่) ในหลาย ๆ สถานการณ์คุณอาจทิ้งตัวบ่งชี้คีย์ไว้เมื่อตัวบ่งชี้ค่า (จำเป็น) :หลังจากคีย์ทำให้การแยกวิเคราะห์ไม่ชัดเจน แต่นั่นไม่ใช่กรณีคุณจะต้องใช้สิ่งนี้เพื่อทำเครื่องหมายคีย์อย่างชัดเจน
Anthon

42

หากต้องการต่อบรรทัดยาวที่ไม่มีช่องว่างให้ใช้เครื่องหมายคำพูดคู่และหลีกเลี่ยงการขึ้นบรรทัดใหม่ด้วยแบ็กสแลช:

key: "Loremipsumdolorsitamet,consecteturadipiscingelit,seddoeiusmodtemp\
  orincididuntutlaboreetdoloremagnaaliqua."

(ขอบคุณ @Tobia)


ขอบคุณสิ่งนี้ช่วยให้ฉันกำหนดปริมาณนักเทียบท่ามากกว่าหลายบรรทัด! หากใครบางคนมีปัญหาเดียวกันนี่คือวิธีแก้ปัญหาของฉันใน Online YAML Parser
Mike Mitterer

ในที่สุดอา ฉันพยายามใส่ ssh-keys ที่ยาวในไฟล์ Hiera yaml ของ Puppet ผ่านหลายบรรทัด แต่จะมีช่องว่างที่ไม่ต้องการเสมอจนกว่าฉันจะใช้คำตอบของคุณ ขอบคุณ
Martijn Heemels

18

ในกรณีที่คุณใช้ YAML และ Twig สำหรับการแปลใน Symfony และต้องการใช้การแปลหลายบรรทัดใน Javascript การคืนค่าขนส่งจะถูกเพิ่มทันทีหลังจากการแปล ดังนั้นแม้แต่รหัสต่อไปนี้:

var javascriptVariable = "{{- 'key'|trans -}}";

ซึ่งมีการแปล yml ต่อไปนี้:

key: >
    This is a
    multi line 
    translation.

จะยังคงเป็นรหัสต่อไปนี้ใน html:

var javascriptVariable = "This is a multi line translation.
";

ดังนั้นเครื่องหมายลบในทวิกไม่ได้แก้ปัญหานี้ วิธีแก้ไขคือการเพิ่มเครื่องหมายลบนี้หลังจากเครื่องหมาย yml มากกว่า:

key: >-
    This is a
    multi line 
    translation.

จะมีผลลัพธ์ที่เหมาะสมการแปลหลายบรรทัดในหนึ่งบรรทัดในทวิก:

var javascriptVariable = "This is a multi line translation.";

ดูเหมือนว่าข้อผิดพลาด คุณมีโอกาสรายงานข้อผิดพลาดหรือไม่?
dreftymac

8

สำหรับสถานการณ์ที่สตริงอาจมีช่องว่างหรือไม่ฉันชอบอัญประกาศและการต่อเนื่องของบรรทัดที่มีแบ็กสแลช:

key: "String \
  with long c\
  ontent"

แต่โปรดทราบเกี่ยวกับข้อผิดพลาดสำหรับกรณีที่บรรทัดต่อเนื่องเริ่มต้นด้วยช่องว่างนั้นจะต้องมีการหลบหนี (เพราะจะถูกแยกออกไปที่อื่น):

key: "String\
  \ with lon\
  g content"

\nถ้าสตริงมีบรรทัดนี้จะต้องมีการเขียนในรูปแบบ C

ดูคำถามนี้ด้วย


หากถูกถอดออกจากที่อื่นเช่นไม่อยู่ในตำแหน่งนั้นคุณสามารถอัปเดตคำตอบของคุณพร้อมข้อมูลเกี่ยวกับตำแหน่งที่จะถูกถอดออก โปรดเขียน parser ตัวใด (สำหรับภาษาใด) ที่ทำเช่นนั้น? ฉันได้เห็นเพียง parsers ตัดชั้นนำเช่น / เว้นวรรคต่อท้ายในสตริงคำพูดหลายในสถานที่
Anthon

0

วิธีแก้ปัญหาด้านบนไม่ได้ผลสำหรับฉันในไฟล์ YAML ภายในโครงการ Jekyll หลังจากลองตัวเลือกมากมายฉันรู้ว่าการฉีด HTML ด้วย<br>อาจทำได้เช่นกันเนื่องจากในที่สุดทุกสิ่งจะถูกแสดงเป็น HTML:

ชื่อ: | ในหมู่บ้าน La Mancha <br>ที่มีชื่อฉันไม่<br>ต้องการที่จะจำ

อย่างน้อยมันก็ใช้งานได้สำหรับฉัน ไม่มีแนวคิดเกี่ยวกับปัญหาที่เกี่ยวข้องกับวิธีการนี้


2
โซลูชันของคุณอ้างถึงปัญหาอื่น: ในกรณีของคุณคุณต้องการให้การกระจายบรรทัดปรากฏใน HTML ที่แสดงผลเนื่องจากการประมวลผล YAML HTML และ YAML ไม่มีความสัมพันธ์โดยนัยซึ่งกันและกัน และแม้ว่า YAML จะผ่านการแบ่งบรรทัดปกติ HTML จะไม่สนใจพวกเขา ในที่สุดคำถามของ op เกี่ยวข้องกับการใช้ linebreaks ใน YAML เองเพื่อป้องกันบรรทัดที่ยาวมาก ไม่สนใจว่าข้อมูลนั้นจะถูกแสดงผลอย่างไรในท้ายที่สุด ทำไมต้องบอกเรื่องนี้? เพราะนี่จะอธิบายว่าทำไมโซลูชันอื่น ๆ ทั้งหมดที่ระบุในที่นี้จึงไม่สามารถใช้งานได้ในกรณีของคุณ
Thomas Urban
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.