A própria classe String tem o método replaceAll.
String a = "!@@##$pera" ;
a.replaceAll("!@#$$" , "") ;
A própria classe String tem o método replaceAll.
String a = "!@@##$pera" ;
a.replaceAll("!@#$$" , "") ;
mas se vc espeera substituir estes caracteres onde quer q eles estejam o correto é fazer um mecanismo de busca
[code] public static void main(String[] args) {
String[] nulos = {"!", "@", "#", ...};
String str = "!@@##$pera";
for (String n:nulos)
str = str.replaceAll(n, "");
System.out.println(str);
}[/code]
java_coffe,
Este código funciona perfeitamente. Veja:
public static void main(String arg[]) {
String palavra = "!@#$%¨&*()_+-=´[`{~]^},.<>;/º/";
String palavra1 = palavra.replaceAll("!@#", "");
System.out.println("Palavra era: [" + palavra + "]");
System.out.println("Palavra ficou: [" + palavra1 + "]");
}
Exibe:
Palavra era: [!@#$%¨&*()_+-=´[`{~]^},.<>;/º/]
Palavra ficou: [$%¨&*()_+-=´[`{~]^},.<>;/º/]
Certo?
java_coffe,
Como assim?
Manda o exemplo do que você tá falando…
Valeu!
[quote=java_coffe][code]
public static void main(String arg[]){
String palavra = "!@#$%¨&*()_+-=´[`{~]^},.<>;/:?º/" ;
String palavra1 = palavra.replaceAll("!@#","");
System.out.println(palavra1)
}
[/code]
Pq não da certo ?
Imprime sempre a mesma string .[/quote]
A classe String é IMUTÁVEL.
Logo, todos os seus métodos retornam uma nova String, mantendo a original inalterada. Você deve estar tentando verificar se a original foi alterada. Use uma nova String para receber o retorno do método replaceAll().
Abraço!
cassio,
Ele já está fazendo isso. Porém, mesmo se ele estivesse usando a mesma String, não haveria problema. Apesar da String ser imutável, a instância da String não é, então fazendo algo do tipo:
String a = "blablabla";
a = a.replaceAll("b", "c");
Não teria problema, apesar da instância não ser a mesma, o código funciona.
java_coffe,
O problema que você está tendo é que o primeiro parâmetro do replaceAll não é uma String normal, e sim uma Regular Expression. E, numa regex (REGular EXpression), o caracter $ tem um significado especial. Para todos os caracteres especiais, você deve utilizar um caracter de escape antes, quando quiser usá-los como literais.
No seu caso, tem que ser assim:
public static void main(String arg[]) {
String palavra = "!@#$%¨&*()_+-=´[`{~]^},.<>;/º/";
String palavra1 = palavra.replaceAll("!@#\\$", "");
System.out.println("Palavra era: [" + palavra + "]");
System.out.println("Palavra ficou: [" + palavra1 + "]");
}
Note o \ antes do $ no replaceAll.
Abraços!
Se vc estiver usando o Java 5 pode usar a versão do método replace que é sobrecarregada p/ receber duas sequencias de caracteres. Aqui funcionou perfeitamente:
String frase = "$%#%@@%%$Fulano$$#@";
String nulos = "@#%$";
for (int i = 0; i < nulos.length(); i++) {
frase = frase.replace(Character.toString(nulos.charAt(i)) , "");
}
System.out.println(frase);
Agora, se for preciso usar o replaceAll mesmo, vc vai ter que fazer o lance que o nosso amigo fcoury falou, de acrescentar o caracter de escape, por que o replaceAll recebe uma expressão regular.
FredMP,
Uma dúvida: este método que você propos vai retirar todas as ocorrências de todos os caracteres da string “nulo”, correto?
Ex.: se tenho uma string “@!#$%&!@(!@!" e a string nulo for “@!” a string vai ficar "#$%&(” com o seu código, e com o meu, “#$%&!@*(!”, certo?
Em outras palavras, o seu código tira TODAS as ocorrências de TODOS os caracteres em nulo, enquanto o meu retira TODAS as ocorrências da string nulo como um TODO, certo?
Valeu!
é muito simples, é só fazer isto:
[code] String[] nulos = {"!", “@”, “#”};
String str = “!@@##$pera”;
for (int i = 0; i < nulos.length; i++)
str = str.replaceAll(nulos[i], "");
System.out.println(str);[/code]
ele apagará qualquer ocorrencia de qualquer letra em nulos
Qual o problema com meu algoritmo?
OBS: já havia citado o exemplo mais acima…
Gente eu gostaria de saber se tem alguma classe que pode me ajudar na substituição de varios caracteres …
Exemplo .:
String a = "pera" ;
a.replace("p" , "b") ;
O replace so troca de um e um !
Mas na verdade ao invés de eu tratar uma unico Caracter eu gostaria de tratar varios ao mesmo tempo .
Exemplo.:
[code]
String a = "!@@##$pera" ;
a.replace(""!@#$$" , "") ;
[/code]
Neste exemplo eu gostaria que esses caracteres fossem substituidos por espaço em branco .
Tem alguma classe onde eu possa fazer isso !?
Agradeço a quam ajudar !
public static void main(String arg[]){
String palavra = "!@#$%¨&*()_+-=´[`{~]^},.<>;/:?º/" ;
String palavra1 = palavra.replaceAll("!@#","");
System.out.println(palavra1)
}
Pq não da certo ?
Imprime sempre a mesma string .
Vc ja tentou colocar mas 3 caracteres !?
Aí vc vai ver que vai imprimir a mesma String .
public static void main(String arg[]) {
String palavra = "!@#$%¨&*()_+-=´[`{~]^},.<>;/º/";
String palavra1 = palavra.replaceAll("!@#$%", "");
System.out.println("Palavra era: [" + palavra + "]");
System.out.println("Palavra ficou: [" + palavra1 + "]");
}
Ele vai imprimir as duas strings do mesmo modo …Eu so fiz colocar o $% a mais dentro do replaceAll …