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.