Sou iniciante em java e estou estudando alguns execicios, e tenho um que consiste em apagar letras de uma palavra ou sequencia de palavras dentro de uma string.
Tenho uma interface que tem um metodo com duas variaveis string, uma recebe as palavras e outra recebe uma sequencia de de caracteres que terao que ser buscados na primeira string e serem removidas. Exemplo var1 recebe “teste” e a var2 recebe “tes” e entao sera removida na primeira e a var1 ficara apenas “te”.
Nao posso utilizar nenhum metodo da classe String, somente posso usar o charAt() e a concatenacao. Fiz alguns testes mas nao cheguei a nada pois ate consigo pegar os caracteres mas nao estou sabendo retirar na string. Segue os testes.
public interface CLimpa {
String limpar(String string, String substring);
}
public class LimparLetras implements CLimpa {
@Override
public String limpar(String string, String substring) {
/* string=string.replace(substring,""); */
return string;
}
}
public class LimpaLetras {
public static void main(String[] args) {
char letra;
char letra2;
String string;
String string2;
int indice;
string=("teste");
string2=("oes");
indice=2;
letra=string.charAt(indice);
letra2=string2.charAt(indice);
if(letra == letra2) {
System.out.println("letras iguais");
} else {
System.out.println("letras diferentes");
}
}
}
O problema que a única método que posso usar da classe string e o chatAt(), o indecifrável não poderia usar e preciso imprimir as palavras sem as letras da substring.
Em relação à segunda string, o que deve ser removidos, são as letras que forem iguais? ou tem que tratar a string completa?
No exemplo q vc citou onde a primeira string é teste e a segunda é tes, o resultado deve ser te. Então o tes foi tratada de forma junta e não cada letra à parte para remover da primeira string, senão todas as letras seriam removidas.
Para quem está a inicial, isto será a forma como se poderá entender melhor
public String limpar(String string, String substring) {
String result = ""; // começar com string vazia
for (int i = 0; i < string.length(); i++) { // percorrer a string informada
boolean equals = true; // flag que indica se encontramos algum carater diferente.
for (int j = 0; j < substring.length(); j++) { // percorrer a substring a remover
if (string.length() <= (i + j) || string.charAt(i + j) != substring.charAt(j)) { // se os caracteres forem diferentes
equals = false; // flag a false
break; // se já encontramos um que não corresponde, podemos parar de percorrer o array
}
}
if (equals) { // Se todos os caracters de substring são iguais à string
i = i + substring.length() - 1; // saltamos esses carateres na string informada
} else { // se são diferentes
result += string.charAt(i); // adiciona o carater que estamos a percorrer ao resultado
}
}
return result;
}