Atualizações da API de cadeias de caracteres em Java 12

Atualizações da API de cadeias de caracteres em Java 12

1. Introdução

Java 12 adicionou algumas APIs úteis aoString class. Neste tutorial, exploraremos essas novas APIs com exemplos.

2. indent()

O métodoindent() ajusta o recuo de cada linha da string com base no argumento passado a ela.

Quandoindent() é chamado em uma string, as seguintes ações são realizadas:

  1. A string é conceitualmente separada em linhas usandolines(). lines() is the String API introduced in Java 11.

  2. ”.

    1. Sen> 0, entãon espaços são inseridos no início de cada linha.

    2. Sen <0, entãoup ton caracteres de espaço em branco são removidos do início de cada linha. Caso uma determinada linha não contenha espaço em branco suficiente, todos os caracteres iniciais de espaço em branco serão removidos.

    3. Sen == 0, então a linha permanece inalterada. No entanto, os terminadores de linha ainda são normalizados.

  3. As linhas resultantes são concatenadas e retornadas.

Por exemplo:

@Test
public void whenPositiveArgument_thenReturnIndentedString() {
    String multilineStr = "This is\na multiline\nstring.";
    String outputStr = "   This is\n   a multiline\n   string.\n";

    String postIndent = multilineStr.indent(3);

    assertThat(postIndent, equalTo(outputStr));
}

Também podemos passar umint negativo para reduzir o recuo da string. Por exemplo:

@Test
public void whenNegativeArgument_thenReturnReducedIndentedString() {
    String multilineStr = "   This is\n   a multiline\n   string.";
    String outputStr = " This is\n a multiline\n string.\n";

    String postIndent = multilineStr.indent(-2);

    assertThat(postIndent, equalTo(outputStr));
}

3. transform()

Podemos aplicar uma função à stringthis usando o métodotransform(). A função deve esperar um único argumentoString e produzir um resultado:

@Test
public void whenTransformUsingLamda_thenReturnTransformedString() {
    String result = "hello".transform(input -> input + " world!");

    assertThat(result, equalTo("hello world!"));
}

Não é necessário que a saída tenha que ser uma sequência. Por exemplo:

@Test
public void whenTransformUsingParseInt_thenReturnInt() {
    int result = "42".transform(Integer::parseInt);

    assertThat(result, equalTo(42));
}

4. Conclusão

Neste artigo, exploramos as novas APIsString em Java 12. Como de costume, trechos de código podem ser encontradosover on GitHub.