Como remover espaços em branco duplicados (incluindo guias, novas linhas, espaços, etc ...) em uma string usando Java?
java
string
whitespace
sem cérebro
fonte
fonte
\s+
mas o que significa 2 barra invertida \\?"\\"
representa a cadeia que consiste em uma única barra invertida. Então, para representar\s+
você escreve"\\s+"
.Você pode usar o regex
e
substitua-o por
$1
.Código Java:
Se a entrada for,
"foo\t\tbar "
você terá"foo\tbar "
como saída.Mas, se a entrada for,
"foo\t bar"
ela permanecerá inalterada, pois não possui caracteres de espaço em branco consecutivos.Se você tratar todos os caracteres de espaço em branco (espaço, guia vertical, guia horizontal, retorno de carro, alimentação de formulário, nova linha) como espaço, poderá usar o seguinte regex para substituir qualquer número de espaços em branco consecutivos por um único espaço:
Mas se você deseja substituir dois espaços em branco consecutivos por um único espaço, faça o seguinte:
fonte
Tente isso - você precisa
import java.util.regex.*;
Onde
string
está sua string na qual você precisa remover espaços em branco duplicadosfonte
oi a maneira mais rápida (mas não a mais bonita) que encontrei é
isso está correndo muito rápido no android, em frente a um regex
fonte
fonte
Embora seja tarde demais, eu encontrei uma solução melhor (que funciona para mim) que substituirá todos os espaços em branco consecutivos do mesmo tipo por um espaço em branco desse tipo. Isso é:
será
Observe que ainda existem espaços em branco iniciais e finais. Então, minha solução completa é:
Aqui,
trim()
substitui todas as cadeias de espaço em branco à esquerda e à direita por "".(\\s)
é para capturar\\s
(ou seja, espaços em branco como '', '\ n', '\ t') no grupo # 1 .+
sign é para combinar 1 ou mais token anterior. Assim,(\\s)+
podem haver caracteres consecutivos (1 ou mais) entre qualquer caractere de espaço em branco ('', '\ n' ou '\ t').$1
é para substituir as cadeias correspondentes pelo grupo nº 1 (que contém apenas 1 caractere de espaço em branco) do tipo correspondente (que é o caractere de espaço em branco único correspondente). A solução acima mudará assim:será
Eu não encontrei minha solução acima aqui, então eu a publiquei.
fonte
Se você deseja se livrar de todos os espaços em branco externos iniciais e finais, você deve fazer algo assim:
Em seguida, você pode remover as duplicatas usando as outras estratégias listadas aqui:
fonte
Você também pode tentar usar o Tokeniser de String, para qualquer espaço, guia, nova linha e tudo. Uma maneira simples é,
fonte
Isso pode ser possível em três etapas:
fonte