Brechen von YAML-Zeichenfolgen über mehrere Zeilen

1. Übersicht

In diesem Artikel erfahren Sie, wie Sie YAML-Zeichenfolgen über mehrere Zeilen aufteilen.

Um unsere YAML-Dateien zu analysieren und zu testen, verwenden wir die SnakeYAML-Bibliothek.

2. Mehrzeilige Zeichenfolgen

Bevor wir beginnen, erstellen wir eine Methode, um einfach einen YAML-Schlüssel aus einer Datei in einen String zu lesen :

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

In den nächsten Unterabschnitten werden einige Strategien zum Aufteilen von Zeichenfolgen auf mehrere Zeilen vorgestellt.

Wir werden auch lernen, wie YAML führende und endende Zeilenumbrüche behandelt, die durch leere Zeilen am Anfang und Ende eines Blocks dargestellt werden.

3. Wörtlicher Stil

Der Literaloperator wird durch das Pipe-Symbol ("|") dargestellt. Es behält unsere Zeilenumbrüche bei, reduziert jedoch leere Zeilen am Ende der Zeichenfolge auf einen einzelnen Zeilenumbruch.

Werfen wir einen Blick auf die YAML-Datei literal.yaml :

key: | Line1 Line2 Line3

Wir können sehen, dass unsere Zeilenumbrüche erhalten bleiben:

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

Schauen wir uns als nächstes literal2.yaml an , das einige Zeilenumbrüche an der Spitze und am Ende enthält:

key: | Line1 Line2 Line3 ...

Wir können sehen, dass jeder Zeilenumbruch vorhanden ist, mit Ausnahme der Zeilenumbrüche, die auf eins reduziert sind:

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

Als nächstes werden wir über Block-Chomping sprechen und wie es uns mehr Kontrolle über das Starten und Beenden von Zeilenumbrüchen gibt.

Wir können das Standardverhalten mithilfe von zwei Chomping-Methoden ändern: keep und strip .

3.1. Behalten

Keep wird durch "+" dargestellt, wie wir in literal_keep.yaml sehen können :

key: |+ Line1 Line2 Line3 ...

Durch Überschreiben des Standardverhaltens können wir sehen, dass jede leere Endzeile beibehalten wird :

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

3.2. Streifen

Der Streifen wird durch "-" dargestellt, wie wir in literal_strip.yaml sehen können :

key: |- Line1 Line2 Line3 ...

Wie wir erwartet haben, wird dadurch jede leere Leerzeile entfernt :

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

4. Gefalteter Stil

Der gefaltete Operator wird durch ">" dargestellt, wie wir in folded.yaml sehen können :

key: > Line1 Line2 Line3

Standardmäßig werden Zeilenumbrüche für aufeinanderfolgende nicht leere Zeilen durch Leerzeichen ersetzt:

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

Schauen wir uns eine ähnliche Datei an, folded2.yaml , die einige leere Leerzeilen enthält:

key: > Line1 Line2 Line3 ...

Wir können sehen, dass leere Zeilen erhalten bleiben, aber auch endende Zeilenumbrüche auf eins reduziert werden :

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

Wir sollten bedenken, dass Block Chomping den Faltstil genauso beeinflusst wie den wörtlichen Stil .

5. Zitieren

Lassen Sie uns einen kurzen Blick auf das Teilen von Zeichenfolgen mit Hilfe von doppelten und einfachen Anführungszeichen werfen.

5.1. Anführungszeichen

Mit doppelten Anführungszeichen können wir einfach mehrzeilige Zeichenfolgen erstellen, indem wir „ \ n “ verwenden:

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

5.2. Einzelzitate

Bei einfachen Anführungszeichen wird " \ n " als Teil der Zeichenfolge behandelt. Die einzige Möglichkeit, einen Zeilenumbruch einzufügen, besteht darin, eine leere Zeile zu verwenden:

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

6. Fazit

In diesem kurzen Tutorial haben wir anhand schneller und praktischer Beispiele verschiedene Möglichkeiten zum Aufteilen von YAML-Zeichenfolgen über mehrere Zeilen untersucht.

Wie immer ist der Code auf GitHub verfügbar.