Trocar chars

6 respostas
B

Bom, tou testando esse codigo aqui que serve para comparar 2 pedaços de dna e verificar onde tem diferenças, ele até agora tá funcionando mas eu queria que além de verificar as diferenças ele trocasse os chars diferentes com base no index por um espaço em branco pra poder saber certinho onde estão os burracos e não tou conseguindo colocar de maneira alguma isso se alguem puder dar uma luz ae. Obrigado

public class Comparar {

	
	public static void main(String[] args) {
		String dna = "gatcacaggt ctatcaccct attaaccact cacgggagct ctccatgcat ttggtatttt\n" +
				"cgtctggggg gtatgcacgc gatagcattg cgagacgctg gagccggagc accctatgtc\n" +
				"gcagtatctg tctttgattc ctgcctcatc ctattattta tcgcacctac gttcaatatt\n" +
				"acaggcgaac atacttacta aagtgtgtta attaattaat gcttgtagga cataataata\n" +
				"acaattgaat gtctgcacag ccactttcca cacagacatc ataacaaaaa atttccacca\n" +
				"aaccccccct cccccgcttc tggccacagc acttaaacac atctctgcca aaccccaaaa\n" +
				"acaaagaacc ctaacaccag cctaaccaga tttcaaattt tatcttttgg cggtatgcac\n" +
				"ttttaacagt caccccccaa ctaacacatt attttcccct cccactccca tactactaat\n" +
				"ctcatcaata caacccccgc ccatcctacc cagcacacac acaccgctgc taaccccata\n" +
				"ccccgaacca accaaacccc aaagacaccc cccacagttt atgtagctta cctcctcaaa\n" +
				"gcaatacact gaaaatgttt agacgggctc acatcacccc ataaacaaat aggtttggtc\n" +
				"ctagcctttc tattagctct tagtaagatt acacatgcaa gcatccccgt tccagtgagt\n" +
				"tcaccctcta aatcaccacg atcaaaagga acaagcatca agcacgcagc aatgcagctc\n" +
				"aaaacgctta gcctagccac acccccacgg gaaacagcag tgattaacct ttagcaataa\n" +
				"acgaaagttt aactaagcta tactaacccc agggttggtc aatttcgtgc cagccaccgc\n" +
				"ggtcacacga ttaacccaag tcaatagaag ccggcgtaaa gagtgtttta gatcaccccc\n" +
				"tccccaataa agctaaaact cacctgagtt gtaaaaaact ccagttgaca caaaatagac\n" +
				"tacgaaagtg gctttaacat atctgaacac acaatagcta agacccaaac tgggattaga\n";
		String dna2 = "gatcacaggt ctatcaccct attaaccact cacgggagct ctccatgcat ttggtatttt\n" +
     		"cgtctggggg gtgtgcacgc gatagcattg cgagacgctg gagccggagc accctatgtc\n" +
     		"gcagtatctg tctttgattc ctgcctcatt ctattattta tcgcacctac gttcaatatt\n" +
     		"acaggcgaac atacctacta aagtgtgtta attaattaat gcttgtagga cataataata\n" +
     		"acaattgaat gtctgcacag ccgctttcca cacagacatc ataacaaaaa atttccacca\n" +
     		"aaccccccct ccccccgctt ctggccacag cacttaaaca catctctgcc aaaccccaaa\n" +
     		"aacaaagaac cctaacacca gcctaaccag atttcaaatt ttatcttttg gcggtatgca\n" +
     		"cttttaacag tcacccccca actaacacat tattttcccc tcccactccc atactactaa\n" +
     		"tctcatcaat acaacccccg cccatcctac ccagcacaca caccgctgct aaccccatac\n" +
     		"cccgaaccaa ccaaacccca aagacacccc ccacagttta tgtagcttac ctcctcaaag\n" +
     		"caatacactg aaaatgttta gacgggctca catcacccca taaacaaata ggtttggtcc\n" +
     		"tagcctttct attagctctt agtaagatta cacatgcaag catccccgtt ccagtgagtt\n" +
     		"caccctctaa atcaccacga tcaaaaggaa caagcatcaa gcacgcagca atgcagctca\n" +
     		"aaacgcttag cctagccaca cccccacggg aaacagcagt gattaacctt tagcaataaa\n" +
     		"cgaaagttta actaagctat actaacccca gggttggtca atttcgtgcc agccaccgcg\n" +
     		"gtcacacgat taacccaagt caatagaagc cggcgtaaag agtgttttag atcaccccct\n" +
     		"ccccaataaa gctaaaactc acctgagttg taaaaaactc cagttgacac aaaatagact\n" +
     		"acgaaagtgg ctttaacata tctgaacaca caatagctaa gacccaaact gggattagat\n";
     
    
		
     for (int i = 0; i < dna.length(); i++) {
    	 
    	
    	 if ( dna.charAt(i) == dna2.charAt(i)){
    		 //System.out.println(i+" Dnas iguais");
         } else {
         
        	 System.out.println(i +" Bases diferentes: Dna 1: "+dna.charAt(i)+ " -> Dna 2: "+dna2.charAt(i));
        	 
        	
        	
        	 
        	 
    	 }
    	
	}
    
	}

}

6 Respostas

GusMcCart

usa o método toCharArray();

char[] dnaChar = dna.toCharArray(), dna2Char = dna2.toCharArray();

....

for (int i = 0; i < dnaChar.length; i++) 
         if ( dnaChar[i] != dna2Char[i])  
              dnaChar[i] = ' '; // ou então dna2Char[i] = ' ';

// Pra voltar pode usar
dna = String.copyValueOf(dnaChar); // ou com o dna2
B

Valeu cara :open_mouth: Tava tentando colocar em array também mas tava fazendo um negocio errado :smiley:

B

Ah me surgiu uma outra duvida, tipo eu tenho essa string ae gigante, passo ela pra um array de char como faço pra concatenar ela pra ficar tudo em uma linha só e não ter quebra de linha? Porque assim fica melhor para comparar e fazer outras coisas que tou querendo. Dei uma lida em stringbuilder mas como os valores dessas strings tão vindo do banco e de um textarea queria saber como fica.

renanjp

Para você remover as quebras de linha basta dar um replace nos caracteres especiais “\n”

Por exemplo:

String s = "Teste para o companheiro do \n guj";
s = s.replace("\n", "");
System.out.println(s);

Espero que tenha ajudado…

Att

B

Pois é, xo postar o meu código aqui que fica mais facil, essas 2 strings vem do banco, elas não vem com "\n" elas vem com varias linhas de sequencia. Só que dai eu preciso concatenar essas varias linhas em uma só porque senão fica dando erro na contagem pelos espaços que tem no fim

@RequestMapping("comparaDNA" )
	public String compara(@RequestParam("comparacao") String comparacao, Model model) {
		dnaDAO dao = new dnaDAO();
		String dna1 = dao.getComparacao().getDna().replaceAll(" ", "");
		String dna2 = comparacao.replaceAll(" ", "");
		
		
		String posicoes = null;
		ArrayList<String> listaComparacoes = new ArrayList<String>();
		char[] dna = dna1.toCharArray(), dnaRef = dna2.toCharArray();
		
		for (int i = 0; i < dnaRef.length; i++) {
			if (dna[i] != dnaRef[i]){
				
				posicoes = String.valueOf(i);
				
				listaComparacoes.add(posicoes+" "+dna1.charAt(i)+" -> "+dna2.charAt(i));
				
			} 
			

		}
	return "mostra";
}
B

Ninguém? :frowning:

Criado 4 de julho de 2012
Ultima resposta 13 de jul. de 2012
Respostas 6
Participantes 3