Adições à API Java 11 String

Adições à API Java 11 String

1. Introdução

Java 11 adicionou algumas APIs úteis aosString class comumente usados. Neste tutorial, exploraremos e usaremos essas novas APIs.

2. repeat()

Como o nome sugere, o método de instânciarepeat() repete o conteúdo da string.

It returns a string whose value is the concatenation of the string repeated n times, where n is passed as a parameter:

@Test
public void whenRepeatStringTwice_thenGetStringTwice() {
    String output = "La ".repeat(2) + "Land";

    is(output).equals("La La Land");
}

Além disso,repeat() retorna uma string vazia se a string estiver vazia ou se a contagem for zero.

3. strip () *

The strip() instance method returns a string with all leading and trailing whitespaces removed:

@Test
public void whenStripString_thenReturnStringWithoutWhitespaces() {
    is("\n\t  hello   \u2005".strip()).equals("hello");
}

Java 11 também adicionou os métodosstripLeading() estripTrailing(), que lidam com espaços em branco à esquerda e à direita, respectivamente.

3.1. Diferença entrestrip() etrim()

strip*() determina se o caractere é um espaço em branco ou não com base emCharacter.isWhitespace(). Em outras palavras,it is aware of Unicode whitespace characters.

Isso é diferente detrim(), que define espaço como qualquer caractere menor ou igual ao caractere de espaço Unicode (U + 0020). Se usarmostrim() no exemplo anterior, obteremos um resultado diferente:

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

Observe comotrim() conseguiu cortar o espaço em branco à esquerda, mas não cortou o espaço em branco à direita. Isso ocorre porquetrim() não está ciente dos caracteres de espaço em branco Unicode e, portanto, não considera ‘ ′ um caractere de espaço em branco.

4. isBlank()

The isBlank() instance method returns true if the string is empty or contains only whitespace. Otherwise, it returns false:

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

Da mesma forma, o métodoisBlank() reconhece caracteres de espaço em branco Unicode, assim comostrip().

5. lines()

The lines() instance method returns a Stream of lines extracted from the string, separated by line terminators:

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

    long lineCount = multilineStr.lines()
      .filter(String::isBlank)
      .count();

    is(lineCount).equals(3L);
}

Um terminador de linha é um dos seguintes:“ ”,“ ”, ou“ ”.

O fluxo contém linhas na ordem em que ocorrem. O terminador de linha é removido de cada linha.

Este método deve ser preferido em vez desplit(), pois fornece melhor desempenho para interromper a entrada de várias linhas.

6. Conclusão

Neste artigo rápido, exploramos as novas APIs de String no Java 11.

Finalmente, trechos de código podem ser encontradosover on GitHub.