Doplnky Java 11 String API
1. Úvod
Java 11 pridala niekoľko užitočných API k bežne používaným String trieda. V tomto tutoriáli budeme skúmať a používať tieto nové API.
2. opakovať ()
Ako už názov napovedá, opakovať () inštančná metóda opakuje obsah reťazca.
Vráti reťazec, ktorého hodnotou je opakované zreťazenie reťazca n krát, kde n sa odovzdáva ako parameter:
@Test public void whenRepeatStringTwice_thenGetStringTwice () {String output = "La" .repeat (2) + "Land"; is (output) .equals ("La La Land"); }
Navyše, opakovať () vráti prázdny reťazec, ak je reťazec prázdny alebo počet je nulový.
3. prúžok * ()
The pásik () metóda instance vracia reťazec s odstránenými všetkými medzičasmi medzery:
@Test public void whenStripString_thenReturnStringWithoutWhitespaces () {is ("\ n \ t ahoj \ u2005" .strip ()). Equals ("ahoj"); }
Java 11 tiež pridala metódy stripLeading () a stripTrailing (), ktoré spracúvajú predné a koncové biele medzery.
3.1. Rozdiel medzi pásik () a trim ()
prúžok * () určuje, či je znak prázdny alebo nie Character.isWhitespace (). Inými slovami, vie o prázdnych znakoch Unicode.
To sa líši od trim (), ktorý definuje medzeru ako akýkoľvek znak, ktorý je menší alebo rovný znaku medzery Unicode (U + 0020). Ak použijeme trim () v predchádzajúcom príklade dostaneme iný výsledok:
@Test public void whenTrimAdvanceString_thenReturnStringWithWhitespaces () {is ("\ n \ t ahoj \ u2005" .trim ()). Equals ("ahoj \ u2005"); }
Všimnite si ako trim () bol schopný orezať vedúci biely priestor, ale nezostrihal koncový biely priestor. To je preto, že trim () nevie o bielych znakoch Unicode, a preto nepovažuje „\ u2005 znak medzery.
4. isBlank ()
The isBlank () inštančná metóda sa vráti pravda ak je reťazec prázdny alebo obsahuje iba medzery. V opačnom prípade sa vráti nepravdivé:
@Test public void whenBlankString_thenReturnTrue () {assertTrue ("\ n \ t \ u2005" .isBlank ()); }
Podobne isBlank () metóda je si vedomá znakov medzery Unicode, rovnako ako pásik ().
5. riadky ()
The riadky () inštančná metóda vráti a Prúd riadkov extrahovaných z reťazca, oddelených ukončovačmi riadkov:
@Test public void whenMultilineString_thenReturnNonEmptyLineCount () {String multilineStr = "Toto je \ n \ n viacriadkový \ n reťazec."; long lineCount = multilineStr.lines () .filter (String :: isBlank) .count (); is (lineCount) .equals (3L); }
Zakončovač linky je jeden z nasledujúcich: „\ N“,„ alebo „\ R \ n“.
Stream obsahuje riadky v poradí, v akom sa vyskytujú. Z každého riadku je odstránený zakončovací riadok.
Táto metóda by mala byť uprednostnená pred split (), pretože poskytuje lepší výkon pri prerušovaní viacriadkového vstupu.
6. Záver
V tomto rýchlom článku sme preskúmali nové rozhrania String API v prostredí Java 11.
Útržky kódu nakoniec nájdete na GitHub.