Dúvida em fazer a troca de caracteres

13 respostas
D

Pessoal tenho o seguinte problema, no programa que estou fazendo preciso verificar a string digitada pelo usuário e fazer a troca de certos caracteres especiais por outros que irei indicar. Ocorre que preciso verificar na string de 2 em 2 caracteres para que eu possa por exemplo trocar ED por 80. Para verificar uma a uma eu tenho o seguinte código:

String suaString2=Instrutor; char[] ch2 =suaString2.toCharArray(); for(int i=0;i<ch2.length;i++) { if(ch2[i]=='á') { ch2[i]='a'; } if(ch2[i]=='Á') { ch2[i]='A'; } } Acontece que como mencionei preciso verificar a string de 2 em 2 caracteres e quando encontrar os dois que procuro, preciso substituir por outros dois. Agradeço se alguém puder me dar uma força.>

13 Respostas

A

faça com que o for caminhe de dois em dois

for(int i=0;i<ch2.length;i+=2) {

if((ch2[i]==E)&&(ch2[i+1]==D)) {

ch2[i]=8;

}

}
T

E mais uma coisa. Não dá para modificar diretamente os caracteres em uma String, você precisa criar uma nova.

/* 1 */ String s = "aeiou";
/* 2 */ char[] c = s.toCharArray();
/* 3 */ c[0] = 'A';
/* 4 */ System.out.println (s); // imprime aeiou
/* 5 */ s = String.valueOf(c); 
/* 6 */ System.out.println (s); // imprime Aeiou

Na linha 2, c é uma cópia do array de caracteres que representa a String s. Não é o próprio array.
Na linha 5, estamos criando uma nova String com os caracteres alterados na linha 3.

D

Valeu pela dica andrelcvc, vou testar para ver se consigo fazer o que preciso. Abraço!

eduardo_lopes

me digam uma coisa, pq não usar:

String var = "aeiou";
   var = var.replaceAll("a","A");

:?:

D

Bah, valeu eduardo_lopes, desculpe a minha ignorância. Valeu mesmo cara. :oops:

eduardo_lopes

q nada cara, o guj é pra essas coisas! :thumbup:

D

Pessoal consegui fazer o que queria utilizando o replaceAll, acontece que da maneira como estou fazendo ele percorre a string a procura dos caracteres que estou informando, mas sem importar a posição onde se encontram. Preciso que ele faça esta busca de 2 em 2 elementos. Alguém poderia me dizer como posso fazer isto. No exemplo abaixo quero que ele troque os caracteres “ef” por “ab”

String var = "efaefa";
var1 = var.replaceAll("ef","ab");
var1 = "abaaba"

O que gostaria que o programa fizesse era trocar somente de 2 em 2 caracteres. A string deveria ter ficado “abaefa” e não “abaaba”. Agradeço se alguém puder me ajudar.

agnm

use um for e um substring

agnm

e equals

D
Tenho a seguinte linha de código:
String continuacao = new String();       
       char[] ch2 =troca_string.toCharArray(); 
       for(int i = 0; i < ch2.length; i+=2){        
           if((ch2[i]=='e')&&(ch2[i+1]=='1')) { 
               ch2[i]='8'; 
               ch2[i+1]='e';               
           } 
           if((ch2[i]=='e')&&(ch2[i+1]=='0')) { 
               ch2[i]='8'; 
               ch2[i+1]='d';               
           } 
           continuacao = String.valueOf(ch2[i]) + String.valueOf(ch2[i+1]); 
            System.out.println("continuacao:" + continuacao);            
       }
Que no caso de eu digitar "e1e0" me retorna o seguinte resultado:
continuacao:8e 
continuacao:8d
Mas caso eu queira atribuir a outra variável o valor desta variável continuação tipo:
troca_string = continuacao; 
System.out.println("troca_string:" + troca_string);

Me é retornado somente o "8d", como faço para que possa atribuir todo o conteúdo da variável continuação na variável troca_string fora do laço for. Agradeço se alguém puder me dar uma força.

agnm

seria isso ?

public static void main(String[] args) {
      String continuacao = new String();       
      char[] ch2 = args[0].toCharArray(); 
      for(int i = 0; i < ch2.length; i+=2){        
          if((ch2[i]=='e')&&(ch2[i+1]=='1')) { 
              ch2[i]='8'; 
              ch2[i+1]='e';               
          } 
          if((ch2[i]=='e')&&(ch2[i+1]=='0')) { 
              ch2[i]='8'; 
              ch2[i+1]='d';               
          } 
          continuacao += String.valueOf(ch2[i]) + String.valueOf(ch2[i+1]); 
      }
      System.out.println("continuacao:" + continuacao);            
   }
agnm

ou iss ?

troca_string += continuacao; 
 System.out.println("troca_string:" + troca_string);
D

Valeu pela dica agnm e desculpe a ignorância, mas quando o cara é meio inesperiente é assim mesmo, falou. :oops:

Criado 29 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 13
Participantes 5