Como remover espaços em brancos internos uma string, deixando apenas um branco entre as palavras

Pessoal,

Necessito remover os espaços em branco internos a uma string em java, deixando apenas um espaço em branco entre as palavras.
Inicialmente, eu usei o método trim() da classe String e, com isto, consigo remover os brancos das extremidades.
Estou tentando criar um algoritmo para remover os brancos internos, deixando apenas um espaço em branco entre as palavras.
Pensei em converter a string original sem os espaços extremos em um array de caracteres.
Com isto, varreria individualmente o conteúdo de cada caracter da string, verificaria se ele é branco e se o próximo também o é, e faria os devidos tratamentos.
Mas, depois de gerar um array de caracteres só com um branco interno entre duas palavras, como eu converteria esse array de caracteres em string novamente ?
Em resumo, dada a string original

String strOrigem = "Luiz                Inácio                Lula                      da           Silva";

eu quero obter a seguinte string

String strDestino = "Luiz Inácio Lula da Silva";

Alguém poderia me dar alguma sugestão.
Agradece,

Max Carvalho

Você pode usar o replaceAll Com expressão regular.

String strOrigem = "Luiz                Inácio                Lula                      da           Silva";  
strOrigem = strOrigem.replaceAll("\s+"," ");
System.out.println(strOrigem);

Talvez a galera, tenha uma opção de melhor performance ou mais simples ainda.

Acho que vai te atender.

1 curtida

para transformar um vetor de char em uma String faça assim

String r = new String(vetDeChar);

mais para tirar os espaços em branco extra acredito que ha meios melhores do que trabalhar com vetor de char

até mais!

String strOrigem = "Luiz                Inácio                Lula                      da           Silva";    
strOrigem = strOrigem.replaceAll(" ","");  
System.out.println(strOrigem);  

Esse é o mais básico que consegui fazer… :smiley:

diogojhony2012,
desse jeito não fica como o colega quer, não é para tirar todos os espaços entre as palavras, deve ficar 1 espaço.

//entraria assim String strOrigem = "Luiz Inácio Lula da Silva"; //sairia assim //"Luiz Inácio Lula da Silva";

caro amigo eu utilizaria o split
a = “algo de bom”;
String[] b = a.split(" ");

String c;

int i=0;

for (i =0,i< b.lenght;i++) {
c += b[i]
}

algo deste geito

Jonas,
desse jeito não fica como o colega quer, não é para tirar todos os espaços entre as palavras, deve ficar 1 espaço.

A melhor alternativa foi apresentada pelo charlesbraw

String strOrigem = "Luiz                Inácio                Lula                      da           Silva";     
strOrigem = strOrigem.replaceAll("\s+"," ");   
System.out.println(strOrigem);  

Não sei se eh a melhor forma…
ou se ja existe um metodo para isto…

massssssss

tai:

public static String trimAll(String text){
	String string = text.trim();
	while (string.contains("  ")) {
		string = string.replaceAll("  ", " ");
	}
	return string;
}

Att

Primeira coisa. O tópico é de 2010. Alguém viu isso antes de começar a responder? Aposto que não.
Segunda. Já foi respondido e resolvido, usando uma solução simples e fácil.
Queria entender o porque de vocês estarem respondendo o tópico sem haver necessidade e o pior, com soluções erradas e/ou desnessariamente complicadas.

Voces vao ficar loucos comigo, por voltar este topico, mas so pra constar.

nos testes que fiz esta expressão, remove tudo o que não for alfanumerico, exemplo (\n, \t)

vlw abc