Java 11 String API-toevoegingen

1. Inleiding

Java 11 heeft enkele nuttige API's toegevoegd aan de veelgebruikte Draad klasse. In deze tutorial zullen we deze nieuwe API's verkennen en gebruiken.

2. herhaling()

Zoals de naam doet vermoeden, is de herhaling() instantiemethode herhaalt de tekenreeksinhoud.

Het retourneert een string waarvan de waarde de aaneenschakeling is van de herhaalde string n keer, waar n wordt doorgegeven als parameter:

@Test openbare leegte whenRepeatStringTwice_thenGetStringTwice () {String output = "La" .repeat (2) + "Land"; is (output) .equals ("La La Land"); }

Bovendien, herhaling() geeft een lege tekenreeks terug als de tekenreeks leeg is of het aantal nul is.

3. strip*()

De strip() instantiemethode retourneert een tekenreeks met alle voorloop- en volgspaties verwijderd:

@Test openbare leegte whenStripString_thenReturnStringWithoutWhitespaces () {is ("\ n \ t hallo \ u2005" .strip ()). Is gelijk aan ("hallo"); }

Java 11 heeft ook methoden toegevoegd stripLeading () en stripTrailing (), die respectievelijk voorloop- en volgspaties verwerken.

3.1. Verschil tussen strip() en bijsnijden ()

strip*() bepaalt of het teken een witruimte is of niet op basis van Character.isWhitespace (). Met andere woorden, het is op de hoogte van Unicode-witruimtetekens.

Dit is anders dan bijsnijden (), waarmee spatie wordt gedefinieerd als elk teken dat kleiner is dan of gelijk is aan het Unicode-spatie-teken (U + 0020). Als we bijsnijden () in het vorige voorbeeld krijgen we een ander resultaat:

@Test public void whenTrimAdvanceString_thenReturnStringWithWhitespaces () {is ("\ n \ t hallo \ u2005" .trim ()). Equals ("hallo \ u2005"); }

Merk op hoe bijsnijden () was in staat om de voorste witruimte bij te snijden, maar het heeft de achterliggende witruimte niet bijgesneden. Dit is zo omdat bijsnijden () is niet op de hoogte van Unicode-witruimtetekens en houdt daarom geen rekening met ‘\ u2005 ′ een witruimteteken.

4. is leeg()

De is leeg() instantiemethode retourneert waar als de string leeg is of alleen witruimte bevat. Anders keert het terug false:

@Test openbare leegte whenBlankString_thenReturnTrue () {assertTrue ("\ n \ t \ u2005" .isBlank ()); }

Evenzo is het is leeg() methode is zich bewust van Unicode-witruimtetekens, net als strip().

5. lijnen ()

De lijnen () instantiemethode retourneert een Stroom van regels die uit de string zijn gehaald, gescheiden door regelafsluiters:

@Test public void whenMultilineString_thenReturnNonEmptyLineCount () {String multilineStr = "Dit is \ n \ n een multiline \ n string."; long lineCount = multilineStr.lines () .filter (String :: isBlank) .count (); is (lineCount) .equals (3L); }

Een lijnafsluiter is een van de volgende: "\ N","\ R", of "\ R \ n".

De stream bevat regels in de volgorde waarin ze voorkomen. De lijnafsluiter wordt van elke lijn verwijderd.

Deze methode verdient de voorkeur boven splitsen (), omdat het betere prestaties biedt voor het onderbreken van invoer met meerdere lijnen.

6. Conclusie

In dit korte artikel hebben we de nieuwe String-API's in Java 11 onderzocht.

Ten slotte zijn codefragmenten te vinden op GitHub.