Java >> Java tutorial >  >> Tag >> String

Anvendelse af nye JDK 11 strengmetoder

I indlæggene "Nye metoder på Java-streng med JDK 11" og "String#repeat Kommer til Java?", diskuterede jeg seks nye metoder, der kommer til Java-strengen med JDK 11.

De tilgængelige JDK 11-builds med tidlig adgang inkluderer allerede disse nye metoder, og jeg bruger en af ​​disse builds med tidlig adgang til at demonstrere dem i dette indlæg.

Jeg bruger OpenJDK JDK 11 Early Access Build 20 til at kompilere og køre eksemplerne vist i dette indlæg.

De seks metoder føjet til String for JDK 11, der er demonstreret i dette indlæg via OpenJDK JDK 11 Early Access Build 20, er:

  • String.repeat(int)
  • String.lines()
  • String.strip()
  • String.stripLeading()
  • String.stripTrailing()
  • String.isBlank()

Kildekoden til eksemplerne vist i dette indlæg er tilgængelig på GitHub.

String.repeat(int)

String.repeat(int) metode giver praktisk funktionalitet, som jeg har ønsket at se i Java, siden jeg oplevede denne funktionalitet i Groovy. Som navnet antyder, gentager denne metode String den køres mod så mange gange som angivet af int parameter. Jeg vil sandsynligvis bruge denne metode ofte i fremtiden, når jeg genererer simple demonstrationer og bruger den til dette indlægs eksempler. Den næste kodeliste viser brugen af ​​String.repeat(int) for nemt at generere header-separatorer til demonstrationsoutputtet.

Brug af String.repeat(int)

/**
 * Write provided {@code String} in header. Note that this
 * implementation uses {@code String.repeat(int)}.
 *
 * @param headerText Title of header.
 */
private static void writeHeader(final String headerText)
{
   final String headerSeparator = "=".repeat(headerText.length()+4);
   out.println("\n" + headerSeparator);
   out.println("= " + headerText + " =");
   out.println(headerSeparator);
}

writeHeader(String) metoden bruger String.repeat(int) for nemt at generere "header separator"-linjer fra "= ” tegn nok gange til at dække den medfølgende headerText længde plus 4 ekstra tegn for at give mulighed for en ekstra "= ” og ekstra plads på hver side af ”header-teksten”. writeHeader(String) metoden bruges af alle de andre demonstrationseksempler i dette indlæg og vil derfor blive demonstreret via disse eksempler.

String.lines()

String.lines() metoden opdeler String hvorpå den kaldes af sine linjeterminatorer og returnerer en Stream af Strings som afgrænset af disse linjeterminatorer.

Brug af String.lines()

/**
 * Demonstrate method {@code String.lines()} added with JDK 11.
 */
public static void demonstrateStringLines()
{
   final String originalString = prepareStringWithLineTerminators();
   final String stringWithoutLineSeparators
      = originalString.replaceAll("\\n", "\\\\n");
   writeHeader("String.lines() on '"  + stringWithoutLineSeparators  + "'");
   final Stream<String> strings = originalString.lines();
   strings.forEach(out::println);
}

Eksempeloutput vises i det næste skærmbillede.

String.strip() / String.stripLeading() / String.stripTrailing()

String.strip() , String.stripLeading() og String.stripTrailing() metoder trimmer hvidt mellemrum [som bestemt af Character.isWhiteSpace()] fra enten forsiden, bagsiden eller både for- og bagsiden af ​​den målrettede String .

Brug af String.strip() / String.stripLeading() / String.stripTrailing()

/**
 * Demonstrate method {@code String.strip()} added with JDK 11.
 */
public static void demonstrateStringStrip()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.strip() on '" + originalString + "'");
   out.println("'" + originalString.strip() + "'");
}

/**
 * Demonstrate method {@code String.stripLeading()} added with JDK 11.
 */
public static void demonstrateStringStripLeading()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.stripLeading() on '" + originalString + "'");
   out.println("'" + originalString.stripLeading() + "'");
}

/**
 * Demonstrate method {@code String.stripTrailing()} added with JDK 11.
 */
public static void demonstrateStringStripTrailing()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.stripTrailing() on '" + originalString + "'");
   out.println("'" + originalString.stripTrailing() + "'");
}

Når ovenstående kode udføres, ser outputtet ud som vist på det næste skærmbillede.

String.isBlank()

String.isBlank() metode angiver, om den målrettede String er tom eller indeholder kun mellemrumstegn som bestemt af Character.isWhitespace(int).

Brug af String.isBlank()

/**
 * Demonstrate method {@code String.isBlank()} added with JDK 11.
 */
public static void demonstrateStringIsBlank()
{
   writeHeader("String.isBlank()");
   final String emptyString = "";
   out.println("Empty String -> " + emptyString.isBlank());
   final String onlyLineSeparator = System.getProperty("line.separator");
   out.println("Line Separator Only -> " + onlyLineSeparator.isBlank());
   final String tabOnly = "\t";
   out.println("Tab Only -> " + tabOnly.isBlank());
   final String spacesOnly = "   ";
   out.println("Spaces Only -> " + spacesOnly.isBlank());
}

Et eksempel på udførelse af denne kode er vist i det næste skærmbillede.

Nogle af metoderne, hvis kode er vist ovenfor, kalder "hjælper" metoder, der kan ses på GitHub.

Metoderne føjet til JDK 11's String er små tilføjelser, men vil lave visse "præsentations"-opgaver relateret til Java String er nemmere end tidligere og reducerer behovet for tredjepartsbiblioteker.

Java tag