Substitui caracter

26 respostas
marciofermino

Amigos quando eu pego o diretorio atual da aplicao ele vem ai assim:

C:\Teste\Sistema

mais eu quero que ele venha assim

C:/teste/Sistema

Ou seja troque “” por “/”

Obrigado a quem puder ajudar

26 Respostas

abelgomes

vou reformatar um campo de valor monetario para double.

entao para o usuario fica assim.
1.000,00

mas para o double tem que ser assim 1000.00

entao eu faço:

valorMoeda.replaceAll("[.]","").replaceAll("[,]",".");

digo o caracter que eu quero mudar no primeiro parametro, e digo o caracter que eu qeuro colocar no segundo parametro…

entao tiro o “.” e coloco “” desse resultado eu tiro a “,” e coloco o “.”, logo desse resultado eu poderia fazer N vezes essa mesma operacao…
espero ter ajudado.

abelgomes

lembrando que o valorMoeda é uma STRING e dwpois eu vou dar um, new Double(valorMoeda); []'s

marciofermino

na verdade o caracter que mesmo trocar é este …

“” por “/”

origem: C:\Teste
final : C:/teste

Roger75
Faça assim:
s="C:\teste\sistema";

		s2=s.replaceAll("\\", "/");
abelgomes

sim amigo…

pega esse caminho…joga em uma String…e ao inves do replaceAll() usa so o replace()…que ai ele faz isso so uma vez…e depois seta o caminho para onde ele tem que ir…se isso nao resolver…seta ai uma parte do seu codigo para nos vermos…valeus

marciofermino

ainda nao deu amigo

pq minha esta assim:

String palavra = “C:\teste\teste.html”

e no seu exemplo esta assim C:\teste\teste.html

thiagofesta

marciofermino:
ainda nao deu amigo

pq minha esta assim:

String palavra = “C:\teste\teste.html”

e no seu exemplo esta assim C:\teste\teste.html

La dentro do replaceAll() deixa só 3 \ ("\", “/”)

marciofermino

Ainda nao deu da erro.

Se puder dar uma olhada


marciofermino

Desculpa amigo esta é imagem correta…


paulog

Seguinte amigo:

Use

string.replaceAll("\\", "/"));

Em Java, para você representar o caractere de escape, o “”, você tem que usá-lo duas vezes assim “\”.

Então quando você escrever:

String s = "C:\";

Na verdade, a String é “C:”

marciofermino
Amigo fiz assim .e olhe o que ele me retornou:
package teste;

public class Main {

    public static void main(String[] args) {
        String c = "C:\teste";        
       
        System.out.println(c.replaceAll("\\", "/"));

    }
}

eu preciso que ele me retorno assim:

C:/teste

O Retorno
C:	este
marciofermino

e eu preciso que retorno assim

c:/teste

ViniGodoy

Como já te disseram use o replace, não o replaceAll.

String teste = "C:\Isso é\um teste"; System.out.println(teste); //Imprime: C:\Isso é\um teste teste = teste.replace("\", "/"); System.out.println(teste); //Imprime: C:/Isso é/um teste

ViniGodoy

[quote=marciofermino]Amigo fiz assim .e olhe o que ele me retornou:

String c = "C:\teste";

Cuidado: Assim como \n é uma quebra de linha, \t é um tab.

Essa sua string, no fundo foi:
“C: este”.

Em Strings, a \ é um caracter especial.
Se você criar uma string com o conteúdo “C:\Teste” tem que declarar a String assim:

String c = "C:\Teste";

\ significa apenas uma única barra.

marciofermino

Então amigo,. mais acontece que minha string só vem desta forma

C:\Teste

e não
C:\Teste

repetindo … ele só vem assim C:\Teste … e eu preciso usar replace e deixar assim C:/Teste

paulog

Dá onde está vindo a sua String?

Não importa dá onde ela venha, se ela está compilada junto com o programa, ou lida de fora (como um imput do usuário) o replace vai funcionar...

Entenda, quando eu coloco a String: "C:\\", a String verdeira é "C:\".
O Java representa a barra "\" com duas "\\". Só isso.

Fiz um programinha para tu entender. Rode e digite na caixa de diálogo, por exemplo, o valor "C:\Teste\replace.txt".

import javax.swing.JOptionPane;

public class TesteReplace {

    public static void main(String[] args) {
        String input = JOptionPane.showInputDialog(null, "Digite o caminho:");
        String programa = "C:\TESTE\x.txt";

        System.out.printf("String do usuário: %s%n", input.replace("\", "/"));
        System.out.printf("String do programa: %s%n", programa.replace("\", "/"));
    }

}
marciofermino

okay deixa eu explicar entao…

fiz uma rotina para pegar o caminho da aplicacao…
este rotima me devolve

C:\Teste\Aplicacao\Sistema

entendeu… minha rotina sempre esta me retornando desta forma…

eu preciso transformar para

C:/Teste/Aplicacao/Sistema

Acontece que ela nunca vai me devolver com \ apesar como vcs ja disseram o java nao ler a barra

eu preciso dar um replace mesmo … para trocar \ por /

mais nunca cou ter isso

C:\Teste\Aplicacao\Sistema

ou

C:\Teste\Aplicacao\Sistema

Afinal eu preciso exatamente… pegar uma string que esta
C:\Teste\Aplicacao\Sistema

e trocar por

C:/Teste/Aplicacao/Sistema

ViniGodoy

Meus Deus, está difícil. Eu entendi exatamente qual é o seu problema, e apontei exatamente o código que faz o que você quer.

Você pelo menos testou o programa que eu mandei?
Viu o que sai nos dois println?

Basta fazer:

suaString = suaString.replace("\", "/");

Isso não está dizendo para substituir “\” e sim “”.
O java considera \ como uma única . Ou seja isso substitui:

C:\Teste

por:

C:/Teste

Do jeito que vc quer.

Tente, depois diga se funcionou ou não.

marciofermino
O meu código
package teste;

public class Main {

    public static void main(String[] args) {
        String c = "C:\teste";        
       
        System.out.println(c.replace("\", "/"));

    }
}

A Saída:

run:
C:	este
BUILD SUCCESSFUL (total time: 0 seconds)

C: este

Entendeu.. rss estou desde ontem com este problema..

acho que agora consegui explicar melhor

O interessante que na ide o \t da string "C:\teste"; fica em negrito..e desta forma .e tirou o caracter "t"

ViniGodoy

Vou repetir o que já te expliquei ali atrás.

\t significa tab.

Se você quer colocar uma barra, terá que usar \.

Isso só vale para strings literais, criadas com “”

Tente rodar esse código:

String x = "C:\teste"; System.out.println(x);

Veja o que imprime.

ViniGodoy

Existem uma série de sequências de caracteres que são especiais no Java. São chamadas de sequencia de escape (scape sequences). Elas servem para inserir no seu texto caracteres como tabulação, quebra de linha, aspas, dígitos unicode que não estejam no seu teclado, etc.

Todas essas sequencias são iniciadas com a . Por isso, a \ é tratada de forma especial em todas as Strings literais. Por exemplo, se você quisesse criar uma string com o valor:
João é “muito legal”.

Como você faria para por as aspas? No Java, usa-se a sequencia especial ". Isso indica que a ", naquele contexto, é uma aspa que deve ir dentro da String, e não a aspa para fechar a string.

String x = "João é \"muito legal\"."; System.out.println(x);

Note que as \ não serão impressas. Se você quiser escrever texto em duas linhas, pode usar o caracter \n, que significa quebra de linha:

String linhas = "Vinícius\nGodoy de\nMendonça"; System.out.println(linhas);

Agora, se a \ é tão especial, como fazer para imprimir uma única barra? E se eu quisesse escrever a string:
C:\nabo
Eu teria um problema, já que \n é uma quebra de linha. Nesse caso, para dizer que a \ é uma barra mesmo, usamos \.

String dir = "C:\nabo"; System.out.println(dir);
Ou então:

String dir = "C:\teste"; System.out.println(dir);

Note que isso vale sempre que você está criando string usando as aspas.

É por isso que a sua IDE dá destaque ao \t. Porque \t é um único caracter, o de tabulação.
Aí explica pq ao imprimir c:\teste ele imprime:
c:
Dá um tab (\t)
E então escreve este.

marciofermino

é dai ele vai funcionar…

mais acontece que a empresa nao vai mandar
c:\

Bem estive pensando …

é simples vou falar para empresa nao gerar os arquivos na paste TESTE …
rss

em outra qualquer menos em pastas que não iniciem com t.

Valeu obrigado…

ViniGodoy

Nossa, o que vc ainda não entendeu?

O \ só vale para strings criadas usando aspas.

Se você ler a string de um arquivo, as barras vão se comportar de forma normal.

paulog

Só complementando:

Então quando você digita

String teste = "C:\nabo";

Você está dizendo para o compilador o seguinte: “Ei tá vendo aquele “\n”, eu coloquei uma “” a mais porque eu quero que sai “\n” no texto em vez pular uma linha, ok?”

Então o compilador compreende e a String irá se transformar em “C:\nabo”.

Em todos os outros casos, quando você vai digitar algo para um programa, ou o programa irá fornecer uma String para ti, como pegar o path no File, a String virá “C:\nabo”.

marciofermino

entedi…

OBRIGADO !

ViniGodoy
Só para demonstrar, roda esse programa:
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;


public class Teste {

    public static void main(String[] args) {
        JFileChooser fileChooser = new JFileChooser();
        
        if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION)
            return;
        
        String file = fileChooser.getSelectedFile().getAbsolutePath();
        file = file.replace("\", "/");
        JOptionPane.showMessageDialog(null, file);
    }
}

Ele pede para você escolher um arquivo, e troca as barras \ por /, do jeito que você quer. Então, exibe o novo nome do arquivo.

Criado 20 de agosto de 2008
Ultima resposta 21 de ago. de 2008
Respostas 26
Participantes 6