Rozbíjanie reťazcov YAML na viacerých riadkoch

1. Prehľad

V tomto článku sa dozvieme o rozbíjaní reťazcov YAML na viacerých riadkoch.

Aby sme mohli analyzovať a testovať naše súbory YAML, použijeme knižnicu SnakeYAML.

2. Viacriadkové reťazce

Predtým, ako začneme, vytvorme metódu na jednoduché načítanie kľúča YAML zo súboru do a String:

String parseYamlKey (String fileName, String key) {InputStream inputStream = this.getClass () .getClassLoader () .getResourceAsStream (fileName); Mapa analyzovaná = yaml.load (inputStream); návrat parsed.get (kľúč); }

V nasledujúcich podkapitolách sa pozrieme na niekoľko stratégií rozdelenia reťazcov na viac riadkov.

Dozvieme sa tiež, ako YAML narába s koncami riadkov na začiatku a na konci predstavovanými prázdnymi riadkami na začiatku a na konci bloku.

3. Doslovný štýl

Doslovný operátor je reprezentovaný symbolom potrubia („|“). Zachováva naše zalomenia riadkov, ale redukuje prázdne riadky na konci reťazca na jeden koniec riadku.

Poďme sa pozrieť na súbor YAML doslovne.yaml:

kľúč: | Riadok1 Riadok2 Riadok3

Vidíme, že naše zalomenia riadkov sú zachované:

Reťazec key = parseYamlKey ("literal.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", kľúč);

Ďalej sa pozrime na doslovný2.yaml, ktorý má niekoľko začiatočných a koncových zlomov riadkov:

kľúč: | Riadok1 Riadok2 Riadok3 ...

Vidíme, že je prítomný každý zlom riadku okrem koncových zlomov riadkov, ktoré sú redukované na jeden:

Reťazec key = parseYamlKey ("literal2.yaml", "key"); assertEquals ("\ n \ nRiadok1 \ n \ nRiadok2 \ n \ nRiadok3 \ n", kľúč);

Ďalej si povieme niečo o blokovaní blokov a o tom, ako nám poskytuje väčšiu kontrolu nad začiatočnými a koncovými zlommi riadkov.

Predvolené správanie môžeme zmeniť pomocou dve metódy chompingu: ponechať a vyzliecť.

3.1. Keep

Keep je reprezentovaný znakom „+“, ako vidíme na literal_keep.yaml:

kľúč: | + Riadok1 Riadok2 Riadok3 ...

Prepísaním predvoleného správania to môžeme vidieť každý zakončený prázdny riadok je uchovaný:

Reťazec key = parseYamlKey ("literal_keep.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3 \ n \ n", kľúč);

3.2. Strip

Pás je znázornený znakom „-“, ako vidíme na literal_strip.yaml:

kľúč: | - Line1 Line2 Line3 ...

Ako sme mohli čakať, výsledkom bude odstránenie každého končiaceho prázdneho riadku:

Reťazec key = parseYamlKey ("literal_strip.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", kľúč);

4. Skladaný štýl

Skladaný operátor je reprezentovaný znakom „>“, ako vidíme na zložený.yaml:

kľúč:> Riadok1 Riadok2 Riadok3

Konce riadkov sú predvolene nahradené medzerami pre nasledujúce neprázdne riadky:

Reťazec key = parseYamlKey ("folded.yaml", "key"); assertEquals ("Riadok1 Riadok2 Riadok3", kľúč);

Pozrime sa na podobný súbor, zložený2.yaml, ktorý má niekoľko koncových prázdnych riadkov:

kľúč:> Line1 Line2 Line3 ...

To vidíme prázdne riadky sa zachovajú, ale koncové zalomenia riadkov sa tiež znížia na jeden:

Reťazec key = parseYamlKey ("folded2.yaml", "key"); assertEquals ("Line1 Line2 \ n \ nLine3 \ n", kľúč);

Mali by sme na to pamätať blokovanie chompingu ovplyvňuje štýl skladania rovnako ako doslovný štýl.

5. Citácia

Poďme sa rýchlo pozrieť na rozdelenie reťazcov pomocou úvodzoviek a jednoduchých úvodzoviek.

5.1. Dvojité úvodzovky

S dvojitými úvodzovkami môžeme ľahko vytvoriť viacriadkové reťazce pomocou „\ n“:

kľúč: „Line1 \ nLine2 \ nLine3“
Reťazec key = parseYamlKey ("plain_double_quotes.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", kľúč);

5.2. Jednotlivé ponuky

Na druhej strane single-quoting zaobchádza „\ n”Ako súčasť reťazca, takže jediný spôsob, ako vložiť koniec riadku, je použitie prázdneho riadku:

kľúč: „Line1 \ nLine2 Line3“
Reťazec key = parseYamlKey ("plain_single_quotes.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", kľúč);

6. Záver

V tomto rýchlom výučbe sme sa prostredníctvom rýchlych a praktických príkladov pozreli na niekoľko spôsobov, ako rozbiť reťazce YAML na viacerých riadkoch.

Ako vždy, kód je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found