Статьи

Применение новых строковых методов JDK 11

В статьях « Новые методы в Java String with JDK 11 » и « String # repeat Coming to Java? «В JDK 11 я обсуждал шесть новых методов, поступающих в строку Java .

Доступные ранние сборки JDK 11 уже включают эти новые методы, и я использую одну из этих ранних сборок доступа, чтобы продемонстрировать их в этом посте.

Я использую OpenJDK JDK 11 Early Access Build 20 для компиляции и запуска примеров, показанных в этом посте.

Строковые Методы

Шесть методов, добавленных в String для JDK 11, которые демонстрируются в этом посте с помощью OpenJDK JDK 11 раннего доступа, сборка 20:

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

Исходный код примеров, демонстрируемых в этом посте, доступен на GitHub .

String.repeat (целое)

Метод String.repeat(int) предоставляет String.repeat(int) функциональность, которую я хотел видеть в Java с тех пор, как испытал эту функциональность в Groovy. Как следует из названия, этот метод повторяет String он запускается, столько раз, сколько предусмотрено параметром int . Я, вероятно, буду часто использовать этот метод в будущем при создании простых демонстраций и использовать его для примеров этого поста. Следующий листинг кода демонстрирует использование String.repeat(int) для простой генерации разделителей заголовка для демонстрационного вывода.

Использование String.repeat(int)

01
02
03
04
05
06
07
08
09
10
11
12
13
/**
 * 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) использует String.repeat(int) для простой генерации строк «разделителя заголовков» из символа « = » достаточное количество раз, чтобы покрыть предоставленную длину headerText плюс 4 дополнительных символа, чтобы обеспечить дополнительное « = » и дополнительное пространство на каждой стороне «заголовка текста». Метод writeHeader(String) используется всеми другими демонстрационными примерами в этом посте и будет продемонстрирован на этих примерах.

String.lines ()

Метод String.lines() разделяет String для которой он вызывается ограничителями строки, и возвращает Stream Strings в соответствии с этими ограничителями строки.

Использование String.lines()

01
02
03
04
05
06
07
08
09
10
11
12
/**
 * 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);
}

Пример вывода показан на следующем снимке экрана.

Строковые Методы

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

String.strip() , String.stripLeading() и String.stripTrailing() пространство [как определено Character.isWhiteSpace () ] с передней, задней или передней и задней сторон целевой String .

Использование String.strip () / String.stripLeading () / String.stripTrailing ()

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * 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() + "'");
}

Когда приведенный выше код выполняется, вывод выглядит так, как показано на следующем снимке экрана.

Строковые Методы

String.isBlank ()

Метод String.isBlank() указывает, является ли целевая String пустой или содержит только символы пробела, как определено Character.isWhitespace (int) .

Использование String.isBlank ()

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
/**
 * 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());
}

Пример выполнения этого кода показан на следующем снимке экрана.

Строковые Методы

Некоторые из методов, код которых показан выше, вызывают «вспомогательные» методы, которые можно увидеть на GitHub .

Методы, добавленные в String JDK 11, являются небольшими дополнениями, но сделают некоторые задачи «представления», связанные с Java String проще, чем в прошлом, и уменьшат потребность в сторонних библиотеках.

Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Применение новых строковых методов JDK 11

Мнения, высказанные участниками Java Code Geeks, являются их собственными.