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

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!

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

Rafael

[quote=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![/quote]

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.

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!

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!

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…

[quote=Mantu][code]
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"));
}

}
[/code]
Divirta-se![/quote]

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