Converter String "26111984" para "26/11/1984" com regex?

6 respostas
J

Galera estou tentando de uma forma automatica convertar uma data com regex sem utilizar de “substring” para que seje feita de uma forma mais rapida e automatica…

Como eu faria isso em regex?

Obrigado!

6 Respostas

Rafael_Steil

E de onde vc tirou a conclusao que expressao regular vai ser mais rapido? :wink:

Rafael

cassio

javaman00:
Galera estou tentando de uma forma automatica convertar uma data com regex sem utilizar de “substring” para que seje feita de uma forma mais rapida e automatica…

Como eu faria isso em regex?

Obrigado!

Não sei exatamente qual a implementação que usaram para programar as regex do Java, mas pelo que sei expressão regular usa recursividade. Em geral recursividade é mais lento do que métodos iterativos, como o substring().
Pra ter certeza, só testando mesmo.

J

fala galera,

na verdade não sabia que seria mais lento utilizando regex…

mais de qualquer forma alguem poderia me explicar como obter o resultado que preciso? De uma forma automatica via regex?

Eu falo de uma forma “automatica” para nao ter que ficar colocando linhas e mais linhas para chegar nesse resultado…

obrigado!

Mantu
public class DateAndRegex {
	public String format(String date) {
		/*
		 * Estamos partindo do pressuposto de que o parâmetro date sempre 
		 * represente uma data válida.
		 */
		String
			regex = "(\d\d)(\d\d)(\d{4})"
		;
		return
			date.replaceAll(regex, "$1/$2/$3")
		;
	}
	
	public static void main(String[] args) {
		DateAndRegex app = new DateAndRegex();
		System.out.println(app.format("13021981"));
	}
}

Divirta-se!

nbluis

Realmente não sei como funciona a lógica de expressões regulares em java.
mas todos os trabalhos que fiz com isso tiveram uma performance magnifica…

Não sei bem ao certo…

Mas ja nesse caso, não sei se é a melhor solução…

J
Mantu:
public class DateAndRegex {
	public String format(String date) {
		/*
		 * Estamos partindo do pressuposto de que o parâmetro date sempre 
		 * represente uma data válida.
		 */
		String
			regex = "(\d\d)(\d\d)(\d{4})"
		;
		return
			date.replaceAll(regex, "$1/$2/$3")
		;
	}
	
	public static void main(String[] args) {
		DateAndRegex app = new DateAndRegex();
		System.out.println(app.format("13021981"));
	}
}
Divirta-se!

O mantu eh um verdadeiro delivery, fastfood ou coisa do tipo... :shock:

eh soh copy and paste

Valeu pela ajuda era isso mesmo que eu precisavas

Criado 28 de fevereiro de 2007
Ultima resposta 1 de mar. de 2007
Respostas 6
Participantes 5