Diferença entre os métodos de string Trim () e strip () em Java 11

em resumo: strip() é uma evolução “ciente do Unicode” de .

csr: jdk-8200378

problema

string :: a guarnição existiu desde os primeiros dias de Java quando Unicode não evoluiu completamente para o padrão que usamos hoje.

A definição de espaço usado por string :: a guarnição é qualquer ponto de código menor ou igual ao ponto de código espacial (\ u0020), comumente referido como caracteres de controle ASCII ou ISO.

Rotinas de aparar compatíveis com o Unicode deve usar Personagem :: Iswhitespace (int).

Além disso, os desenvolvedores não foram capazes de eliminar especificamente o espaço em branco de sangramento ou eliminando especificamente o espaço em branco no final.

> Solução

Insira o método S de recorte que considere os blanks Unicode e fornecem controle adicional de apenas no início ou no final.

Uma característica comum desses novos métodos são que eles usam Um diferente (mais recente “” espaço em branco “do que métodos antigos como String.trim(). Erro JDK-8200373.

O javadoc atual para string :: aparar não deixa claro qual a definição de “espaço” é usada no código. Com métodos adicionais de recorte que vêm no futuro próximo que usam uma definição diferente de espaço, a esclarecimento é imperativa. String :: Trim usa a definição de espaço como qualquer ponto de código menor ou igual ao ponto de código do caractere de espaço (\ u0020). Os métodos de recorte mais recentes usarão a definição de espaço (branco) como qualquer ponto de código que retorne verdadeiro quando é passado para o personagem :: pregado do espaço em branco.

o método isWhitespace(char) foi adicionado ao Character com o JDK 1.1, mas o método Não foi introduzido na classe Character até JDK 1.5. O último método (que aceita um parâmetro do tipo int) para admitir caracteres suplementares. Comentários de Javadoc para a classe Character Definir caracteres suplementares (geralmente modelados com “Pontos de código” com base em int) versus caracteres BMP (normalmente modelados com um único caractere):

O conjunto de caracteres de U + 0000 para U + FFFF é às vezes referido como o plano multilíngüe básico (BMP). Os personagens cujos pontos de código são maiores que U + FFFF são chamados de caracteres suplementares. A plataforma Java usa a representação UTF-16 em matrizes de caracteres e as classes de string e stringbuffer. Nesta representação, os caracteres suplementares são representados como um par de valores de caracteres … Um valor de caractere, portanto, representa pontos de código do nível multilingual básico (BMP), incluindo pontos de código substitutos ou unidades de código do UTF-16 codificação. Um valor int representa todos os pontos de código Unicode, incluindo pontos de código complementares. … os métodos que só aceitam um valor de caractere não podem admitir caracteres suplementares. … os métodos que aceitam um valor int suportam todos os caracteres Unicode, incluindo caracteres complementares.

openjdk Changeset.

Comparação comparativa Entre trim() e strip() – por que string.strip () é 5 vezes mais rápido que string.trim () para uma corrente em branco em Java 11

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *