複数行にわたるYAML文字列の分割

1。概要

この記事では、YAML文字列を複数行に分割する方法について学習します。

YAMLファイルを解析してテストするために、SnakeYAMLライブラリを利用します。

2.複数行の文字列

始める前に、YAMLキーをファイルから文字列に単純に読み取るメソッドを作成しましょう:

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

次のサブセクションでは、文字列を複数の行に分割するためのいくつかの戦略について説明します。

また、YAMLがブロックの最初と最後にある空の行で表される先頭と末尾の改行を処理する方法についても学習します。

3.リテラルスタイル

リテラル演算子は、パイプ(“ |”)記号で表されます。改行を保持しますが、文字列の最後の空の行を1つの改行に減らします。

YAMLファイルliteral.yamlを見てみましょう:

key: | Line1 Line2 Line3

改行が保持されていることがわかります。

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

次に、いくつかの先頭と末尾の改行あるliteral2.yamlを見てみましょう

key: | Line1 Line2 Line3 ...

1つに減らされた終了改行を除いて、すべての改行が存在することがわかります。

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

次に、ブロックチョッピングと、それによって改行の開始と終了をより細かく制御する方法について説明します。

keepとstripの2つのチョッピング方法を使用して、デフォルトの動作を変更できます。

3.1。保つ

リテラル_keep.yamlでわかるように、Keepは「+」で表されます。

key: |+ Line1 Line2 Line3 ...

デフォルトの動作をオーバーライドすることで、すべての終了空行が保持されいることがわかります。

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

3.2。ストリップ

ストリップは、literal_strip.yamlで確認できるように、「-」で表されます。

key: |- Line1 Line2 Line3 ...

予想どおり、これにより、すべての終了空行削除されます

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

4.折りたたまれたスタイル

folded.yamlでわかるように、folded演算子は「>」で表されます

key: > Line1 Line2 Line3

デフォルトでは、連続する空でない行の改行はスペース文字に置き換えられます。

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

同様のファイルfolded2.yamlを見てみましょう。このファイルには、いくつかの終了する空の行があります。

key: > Line1 Line2 Line3 ...

空の行が保持されていることがわかりますが、終了の改行も1つに減っています。

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

ブロックチョッピングは、リテラルスタイルに影響するのと同じように、折りたたみスタイルにも影響することに注意してください。

5.引用

二重引用符と一重引用符を使用して文字列を分割する方法を簡単に見てみましょう。

5.1。二重引用符

二重引用符を使用すると、「\ n」を使用して複数行の文字列を簡単に作成できます。

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

5.2。一重引用符

一方、一重引用符は「\ n」を文字列の一部として扱うため、改行を挿入する唯一の方法は空の行を使用することです。

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

6.結論

このクイックチュートリアルでは、YAML文字列を複数行に分割する複数の方法をすばやく実用的な例で見てきました。

いつものように、コードはGitHubで入手できます。