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.