Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no exerício 23 do módulo 06 - alterando o separador

Tive uma dúvida quanto a formatação da data. No exercício quando fazemos o primeiro system.out aparece a senha formatada direitinho com dia, mês, ano --> 31-12-2007 No entanto, quando a gente faz o exercício de alterar o separador e adiciona o código String novaData = data.replaceAll("-", "/"); ao fazer o system.out o resultado que aparece é assim: 2007/12/31

  • tentei formatar de algumas formas por meio do date, localdate, mas não consegui.. Alguém sabe dizer como faria para a data ficar formatada corretamente?

  • o código inteiro é o seguinte:

        String data = "2007-12-31";
        Pattern pattern = Pattern.compile("(\\d{4})(-)(\\d{2})(-)(\\d{2})");
        Matcher matcher = pattern.matcher(data);
        if (matcher.matches()) {

            String ano = matcher.group(1);
            String mes = matcher.group(3);
            String dia = matcher.group(5);

            String separador1 = matcher.group(2);
            String separador2 = matcher.group(4);

            String novaData = data.replaceAll("-", "/");

            System.out.println(dia + separador1 + mes + separador2 + ano);
            System.out.println(novaData);
  • o primeiro system.out mostra a data 31-12-2007
  • o segundo mostra 2007/12/31
2 respostas
solução!

Oi Milena, tudo bem?

Vejamos seu eu consigo te ajudar.

A variável data é um string com uma data qualquer no padrão americano, correto? Sendo assim, quando você aplica o replaceAll nela da forma como está especificado você simplesmente realizando a substituição do caractere - pela barra (/) mas mantendo as posições dos números na data. Por isso, o resultado acaba sendo a data ainda no formato americano só que com barras: 2007/12/31.

Vejo como a saída mais simples aí para chegar ao formato DD/MM/AAAA utilizar a mesma abordagem do primeiro System.out.println(), só que dessa vez trocando o separador pela barra conforme exemplo abaixo:

System.out.println(dia + "/" + mes + "/" + ano);

Uma vez que você já havia utilizado a expressão regular para obter as informações da data de forma separada (através do Patter.compile() e em seguida o pattern.matcher()) bastaria reorganizá-la da maneira como desejasse.

Sendo assim, vejo a linha String novaData = data.replaceAll("-", "/"); como um trecho desnecessário para obter o resultado que você mencionou no tópico.

Espero ter ajudado, e caso tenha alguma dúvida adicional basta abrir um novo tópico aqui no fórum, tá bom?

Até mais. :)

Perfeito!!! Muito simples a solução hahahaha

Obrigada pela atenção e pela rapidez em responder a minha dúvida! :D