Java 11 String API-tillegg
1. Introduksjon
Java 11 la til noen nyttige API-er til de ofte brukte String klasse. I denne opplæringen vil vi utforske og bruke disse nye API-ene.
2. gjenta()
Som navnet antyder, er gjenta() forekomstmetode gjentar strenginnholdet.
Den returnerer en streng hvis verdi er sammenkoblingen av strengen som gjentas n ganger, hvor n overføres som parameter:
@Test offentlig ugyldig nårRepeatStringTwice_thenGetStringTwice () {String output = "La" .repeat (2) + "Land"; er (output) .equals ("La La Land"); }
I tillegg gjenta() returnerer en tom streng hvis strengen er tom eller antallet er null.
3. stripe * ()
De stripe () forekomst-metoden returnerer en streng med alle ledende og etterfølgende mellomrom fjernet:
@Test offentlig ugyldig nårStripString_thenReturnStringWithoutWhitespaces () {er ("\ n \ t hallo \ u2005" .strip ()). Er lik ("hallo"); }
Java 11 la også til metoder stripLeading () og stripTrailing (), som håndterer henholdsvis ledende og etterfølgende mellomrom.
3.1. Forskjell mellom stripe () og listverk()
stripe * () avgjør om tegnet er mellomrom eller ikke basert på Character.isWhitespace (). Med andre ord, den er klar over Unicode-mellomromstegn.
Dette er forskjellig fra listverk(), som definerer mellomrom som hvilket som helst tegn som er mindre enn eller lik Unicode-romtegnet (U + 0020). Hvis vi bruker listverk() i forrige eksempel vil vi få et annet resultat:
@Test offentlig ugyldig nårTrimAdvanceString_thenReturnStringWithWhitespaces () {er ("\ n \ t hallo \ u2005" .trim ()). Er lik ("hallo \ u2005"); }
Legg merke til hvordan listverk() var i stand til å trimme det ledende hvite området, men det trimmet ikke det etterfølgende hvite området. Dette er fordi listverk() er ikke klar over Unicode-mellomromstegn og anser derfor ikke\ u2005 ′ et hvitt mellomrom.
4. isBlank ()
De isBlank () forekomst metode returnerer ekte hvis strengen er tom eller bare inneholder mellomrom. Ellers kommer den tilbake falsk:
@Test offentlig ugyldig nårBlankString_thenReturnTrue () {assertTrue ("\ n \ t \ u2005" .isBlank ()); }
Tilsvarende isBlank () metoden er klar over Unicode-mellomromstegn, akkurat som stripe ().
5. linjer ()
De linjer () forekomst metode returnerer a Strøm av linjer hentet fra strengen, atskilt med linjeterminatorer:
@Test offentlig ugyldig nårMultilineString_thenReturnNonEmptyLineCount () {String multilineStr = "Dette er \ n \ n en flerlinjestreng."; long lineCount = multilineStr.lines () .filter (String :: isBlank) .count (); er (lineCount) .equals (3L); }
En linjeterminator er en av følgende: “\ N”,“\ R”, eller “\ R \ n”.
Strømmen inneholder linjer i den rekkefølgen de forekommer. Linjeterminatoren fjernes fra hver linje.
Denne metoden bør foretrekkes fremfor dele(), ettersom det gir bedre ytelse for å bryte flere linjer.
6. Konklusjon
I denne raske artikkelen utforsket vi de nye String API-ene i Java 11.
Til slutt kan du finne kodebiter på GitHub.