Рубрики
Без рубрики

Java 12 Строковые методы

Java 12 была выпущена в марте 2019 года. В классе String добавлены четыре новых метода. В этом уроке мы подробно рассмотрим эти новые методы. 1.

Автор оригинала: Pankaj Kumar.

Java 12 была выпущена в марте 2019 года. В классе String добавлены четыре новых метода. В этом уроке мы подробно рассмотрим эти новые методы.

1. отступ(int n)

Этот метод корректирует отступ каждой строки в строке на основе значения “n”, а также нормализует символы окончания строки.

  • Если n > 0, то в начале каждой строки вставляется n пробелов (U+0020).
  • Если n < 0, то пробелы в начале каждой строки удаляются. Если данная строка не содержит достаточного количества пробелов, то все начальные пробелы удаляются. Символ табуляции также рассматривается как один символ.
  • Если, то строка остается неизменной. Однако терминаторы строк все еще нормализуются.
String str = "*****\n  Hi\n  \tHello Pankaj\rHow are you?\n*****";

System.out.println(str.indent(0));
System.out.println(str.indent(3));
System.out.println(str.indent(-3));

Выход:

*****
  Hi
  	Hello Pankaj
How are you?
*****

   *****
     Hi
     	Hello Pankaj
   How are you?
   *****

*****
Hi
Hello Pankaj
How are you?
*****

Давайте рассмотрим те же примеры с помощью оболочки .

➜  ~ jshell
|  Welcome to JShell -- Version 12
|  For an introduction type: /help intro

jshell> String str = "*****\n  Hi\n  \tHello Pankaj\rHow are you?\n*****";
str ==> "*****\n  Hi\n  \tHello Pankaj\rHow are you?\n*****"

jshell> str.indent(0)
$2 ==> "*****\n  Hi\n  \tHello Pankaj\nHow are you?\n*****\n"

jshell> str.indent(3)
$3 ==> "   *****\n     Hi\n     \tHello Pankaj\n   How are you?\n   *****\n"

jshell> str.indent(-3)
$4 ==> "*****\nHi\nHello Pankaj\nHow are you?\n*****\n"

jshell> 

Обратите внимание, что \r нормализуется до \n при вызове метода indent ().

2. преобразование(Функция суперструна,? расширяет R> f) суперструна,? расширяет R> f)

Этот метод позволяет нам вызывать функцию в данной строке. Функция должна ожидать один строковый аргумент и выдавать результат R.

Давайте рассмотрим пример, в котором мы будем использовать метод transform() для преобразования строки CSV в список строк. Обратите внимание на использование лямбда-выражений для реализации функционального интерфейса .

String s = "Hi,Hello,Howdy";
List strList = s.transform(s1 -> {return Arrays.asList(s1.split(","));});
System.out.println(strList);

Выход:

3. Необязательно<Строка> описывать констебля()

Java 12 представила API констант в JEP 334 . Если вы посмотрите документацию по классу строк, то увидите, что в нем реализованы два новых интерфейса от Constants API – Constable и ConstantDesc. Этот метод объявлен в интерфейсе констебля и реализован в классе String.

Этот метод возвращает необязательный, содержащий номинальный дескриптор для этого экземпляра, которым является сам экземпляр.

String so = "Hello";
Optional os = so.describeConstable();
System.out.println(os);
System.out.println(os.get());

Выход:

Optional[Hello]
Hello
Hello

Строковый метод Java Описывает Констебля

4. Строка resolveConstantDesc(методы.Поиск поиск)

Этот метод является частью API констант и объявлен в интерфейсе Constant Desc. Он разрешает этот экземпляр как константу Desc, результатом которой является сам экземпляр.

jshell> import java.lang.invoke.MethodHandles;

jshell> String so1 = "Hello";
so1 ==> "Hello"

jshell> so1.resolveConstantDesc(MethodHandles.lookup());
$18 ==> "Hello"

Вывод

Методы indent() и transform() являются отличным дополнением к классу String. Методы API констант не имеют большого использования для обычных задач, связанных с разработкой.