Memutus String YAML Pada Beberapa Baris

1. Ikhtisar

Dalam artikel ini, kita akan belajar tentang memecah string YAML dalam beberapa baris.

Untuk mengurai dan menguji file YAML kami, kami akan menggunakan perpustakaan SnakeYAML.

2. String Multi-Baris

Sebelum kita mulai, mari buat metode untuk membaca kunci YAML dari file menjadi String :

String parseYamlKey(String fileName, String key) { InputStream inputStream = this.getClass() .getClassLoader() .getResourceAsStream(fileName); Map parsed = yaml.load(inputStream); return parsed.get(key); }

Di subbagian berikutnya, kita akan melihat beberapa strategi untuk memisahkan string menjadi beberapa baris.

Kita juga akan mempelajari bagaimana YAML menangani jeda baris di depan dan di akhir yang direpresentasikan oleh baris kosong di awal dan akhir blok.

3. Gaya Literal

Operator literal diwakili oleh simbol pipa (“|”). Itu membuat jeda baris kita tetapi mengurangi baris kosong di akhir string menjadi satu baris.

Mari kita lihat file YAML literal.yaml :

key: | Line1 Line2 Line3

Kita dapat melihat bahwa jeda baris kita dipertahankan:

String key = parseYamlKey("literal.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

Selanjutnya, mari kita lihat literal2.yaml , yang memiliki jeda baris di depan dan di akhir:

key: | Line1 Line2 Line3 ...

Kita dapat melihat bahwa setiap baris baru ada kecuali untuk mengakhiri baris baru, yang dikurangi menjadi satu:

String key = parseYamlKey("literal2.yaml", "key"); assertEquals("\n\nLine1\n\nLine2\n\nLine3\n", key);

Selanjutnya, kita akan berbicara tentang mengunyah blok dan bagaimana hal itu memberi kita lebih banyak kendali atas memulai dan mengakhiri jeda baris.

Kita dapat mengubah perilaku default dengan menggunakan dua metode chomping: keep dan strip .

3.1. Menjaga

Keep diwakili oleh “+” seperti yang bisa kita lihat di literal_keep.yaml :

key: |+ Line1 Line2 Line3 ...

Dengan menimpa perilaku default, kita dapat melihat bahwa setiap baris kosong akhir disimpan :

String key = parseYamlKey("literal_keep.yaml", "key"); assertEquals("Line1\nLine2\nLine3\n\n", key);

3.2. Mengupas

Strip diwakili oleh “-” seperti yang bisa kita lihat di literal_strip.yaml :

key: |- Line1 Line2 Line3 ...

Seperti yang kita duga, ini menghasilkan penghapusan setiap baris kosong akhir :

String key = parseYamlKey("literal_strip.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

4. Gaya Dilipat

Operator lipat diwakili oleh “>” seperti yang bisa kita lihat di folded.yaml :

key: > Line1 Line2 Line3

Secara default, jeda baris diganti dengan karakter spasi untuk baris tidak kosong yang berurutan:

String key = parseYamlKey("folded.yaml", "key"); assertEquals("Line1 Line2 Line3", key);

Mari kita lihat file serupa, folded2.yaml , yang memiliki beberapa baris kosong akhir:

key: > Line1 Line2 Line3 ...

Kita dapat melihat bahwa baris kosong dipertahankan, tetapi jeda baris akhir juga dikurangi menjadi satu :

String key = parseYamlKey("folded2.yaml", "key"); assertEquals("Line1 Line2\n\nLine3\n", key);

Kita harus ingat bahwa mengunyah balok mempengaruhi gaya pelipatan seperti halnya gaya literal .

5. Mengutip

Mari kita lihat sekilas cara memisahkan string dengan bantuan tanda kutip ganda dan tunggal.

5.1. Kutipan Ganda

Dengan tanda kutip ganda, kita dapat dengan mudah membuat string multi-baris dengan menggunakan “ \ n “:

key: "Line1\nLine2\nLine3"
String key = parseYamlKey("plain_double_quotes.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

5.2. Kutipan Tunggal

Di sisi lain, tanda kutip tunggal memperlakukan “ \ n ” sebagai bagian dari string, jadi satu-satunya cara untuk menyisipkan baris baru adalah dengan menggunakan baris kosong:

key: 'Line1\nLine2 Line3'
String key = parseYamlKey("plain_single_quotes.yaml", "key"); assertEquals("Line1\\nLine2\nLine3", key);

6. Kesimpulan

Dalam tutorial singkat ini, kami telah melihat berbagai cara untuk memecah string YAML melalui beberapa baris melalui contoh cepat dan praktis.

Seperti biasa, kode tersedia di GitHub.