String.replace

Pessoal,

Eu fiz a seguinte função cujo objetivo é remover alguns caracteres de uma string e substituir por “_”:

[code]
public String monta_nome(String nome) {
String novo_nome = nome;

    novo_nome.replace("(", "_");
    novo_nome.replace(")", "_");
    novo_nome.replace("[", "_");
    novo_nome.replace("]", "_");
    novo_nome.replace(":", "_");
    novo_nome.replace(" ", "_");
    novo_nome.replace("/", "_");
    novo_nome.replace("", "_");

    String char_inicial = nome.substring(0, 1);
    Integer inicial;
    try {
        inicial = Integer.parseInt(char_inicial);
        novo_nome = "Ip_" + novo_nome;
    } catch (NumberFormatException nfe) {
        inicial = 0;
    }
    System.err.println(nome + "=========>" + novo_nome);
    return novo_nome;

}[/code]

O final da função funciona perfeitamente, isto é, o fato de quando a string iniciar por número eu acrescento “Ip” antes do número.
A substituição dos caracteres não funciona corretamente, isto é, não me dá mensagem de erro alguma e me retorna a mesma string do input.

Alguémpode me ajudar?

Obrigado,

Strings são imutáveis; o método replace retorna uma nova string. O que você deve fazer é algo como:

     String novo_nome = nome;  
   
     novo_nome = novo_nome.replace("(", "_"); 
...  e assim por diante ...

Você também pode usar:

novo_nome.replace("(", “_”);

novo_nome.replace(")", “_”);

novo_nome.replace("[", “_”);

novo_nome.replace("]", “_”);

novo_nome.replace(":", “_”);

novo_nome.replace(" ", “_”);

novo_nome.replace("/", “_”);

novo_nome.replace("", “_”);

    novo_nome = novo_nome.replaceAll ("[(): /\[\]]", "_");

Putz que vergonha que eu passei!!!

Muito básico o erro.

Muito obrigado,

Também funciona:

novo_nome =novo_nome.replacaAll("[(|)|\[|\]|:| |/]","_");