Pergunta

Como faço para aparar espaços dentro deixando apenas um espaço levando consideração de desempenho?

Input:
     AA     BB
Output:
AA BB

Input:
A      A
Output:
A A
Foi útil?

Solução

System.out.println("     AA     BB".replaceAll("\\s+", " ").trim());

Output:

AA BB

Nota: Ao contrário de algumas das outras soluções aqui, isso também substitui uma única guia com um único espaço. Se você não tem nenhum guias que você pode usar "{2}" em vez que será ainda mais rápido:

System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());

Outras dicas

Substituir dois ou mais espaços "\\s{2,}" por um único " " espaço e fazer um trim() depois de se livrar da esquerda e à direita espaços como você mostrou no 1º exemplo.

output = input.replaceAll("\\s{2,}", " ").trim();
s = s.replaceAll("\\s+", " " ).trim();

"Hello a a g g a   gag gs    gs@".replaceAll( "[ ]+{2}", " ") ).trim();

Existem respostas corretas aqui, por exemplo:.

s = s.replaceAll("\\s+", " " ).trim();

Mas eu acho que também é importante escolher a pergunta correta. Em vez de perguntar sobre a poda de uma String usando expressões regulares, porque não basta perguntar sobre aparar a String, e permitir que as pessoas respondendo a mostrar-lhe a melhor estratégia?

Pode muito bem haver melhores formas de entrar em colapso espaços do que usar uma expressão regular. Há certamente outros maneiras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top