Replace em mais de um caracter

Saudações meus caros!

Venho com mais uma dúvida. Estou escrevendo um método que deve gerar uma cadeia de RNA à partir de uma cadeia de DNA. Isso acontece trocando as Letras A-U, T-A, C-G, G-C.
Para trocar as letras estou usando o método replace(), aí que está o problema. O programa não está fazendo a troca das letras, no máximo, ele executa o último replace.

public String trocaDnaRna(String seq){
		
                seq.replace('T','1');
		seq.replace('C','2');
		seq.replace("A", "3");
		seq.replace('G', '4');
		seq.replace("1","A");
		seq.replace("2","G");
		seq.replace("3", "U");
		seq.replace('4', 'C');
		
		return seq.toUpperCase();
		}

O que eu quero, é que o método acima troque todos os t por 1, os c por 2, e depois converta de 1 para a, 2 para g, etc.
já tentei utilizar uma variável para receber cada um dos replaces, porém, o que conta é sempre o último.

Alguém poderia me ajudar?

Obrigado

Tente assim amigo:


public String trocaDnaRna(String seq){  

        seq = seq.replace("T", "1");  
        seq = seq.replace("C", "2");  
        seq = seq.replace("A", "3");  
        seq = seq.replace("G", "4");  
        seq = seq.replace("1" , "A");  
        seq = seq.replace("2" , "G");  
        seq = seq.replace("3" , "U");  
        seq = seq.replace("4" , "C");

        return seq.toUpperCase();  
}  

Atenção para as aspas duplas

Tenta assim

[code] public String trocaDnaRna(String seq){
String t1,t2;
t1 = seq.replace(“T”, “1”);
t2 = t1.replace(“C”, “2”);
t1 = t2.replace(“A”, “3”);
t2 = t1.replace(“G”, “4”);
t1 = t2.replace(“1” , “A”);
t2 = t1.replace(“2” , “G”);
t1 = t2.replace(“3” , “U”);
t2 = t1.replace(“4” , “C”);

        return t2.toUpperCase();    
}    [/code]

Olá amigo a string cria um novo objeto ao usar o replace, portanto vc deverá fazer uma nova atribuição s= s.replace(“x”,“C”); ou vc poderá usar o stringbuilder que é bem mais rápido computacionalmente falando. O stringbuilder tem o método replace e vc não precisará fazer uma nova atribuição.

Você nem precisa trocar por um número e depois trocar o número pela outra letra.

Basta fazer string = string.replaceAll(“A”, “t”).replaceAll(“T”, “a”).replaceAll…().toUpperCase();

Cuidado com esses replaces, pode gerar uma sobrecarga de memória.

Muito obrigado!!

Facilitou bastante.

Um abraço! :lol: