Replace não troca os chars

4 respostas
E
System.out.println("Digite o código de entrada no modelo xCy:");
        entrada = scan.nextLine();

//recebe entrada tipo "ABBABACABABBA"

entrada.replace("C","E");
System.out.println(entrada);

A saída aqui está sendo a mesma da entrada, por que ? Não dá erro nenhum, roda blz, mais o replace não troca a letra c por e. To usando o replace de forma errada ??
Obrigado !

PS: OMGOSH, tópico errado! sorry :\

4 Respostas

ArtesaoDeSoftware

entrada = entrada.replace(“C”,“E”);

e da próxima vez coloque no forum Java Básico

ViniGodoy

A classe String é imutável. Isso significa que nenhum de seus métodos altera o seu conteúdo. Todos os métodos que parecem fazer isso (como replace, replaceAll ou substring) na verdade retornam uma nova String com o conteúdo modificado, sem mexer na String onde foram chamados.

Por isso a necessidade de fazer como o colega descreveu:

entrada = entrada.replace("C","E");

Nessa linha, o replace gera uma string modificada, e a atribui na variável entrada, que tinha a String original.

Para saber mais sobre classes imutáveis, leia:

aloha

replaceall?

ViniGodoy

Sim, similar ao replace, mas usa expressões regulares. Veja o javadoc, para mais informações.

Criado 18 de abril de 2011
Ultima resposta 18 de abr. de 2011
Respostas 4
Participantes 4