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.