[color=darkblue]Galera…
É o seguinte…
Em uma aplicação que estou desenvolvendo pega o nome de um arquivo q está dentro de um diretório…
O arquivo q ele pegará deve seguir a seguinte máscara:
yyyy_MM_dd_NomeDoMunicipio_NomeDaPessoa_HHmm.EWC
sendo q a extensão EWC é baseada em um software q temos aqui…
Nesta máscara, NÃO PODE conter caracteres especiais (ç, ^, ~, ´, `,@,&, entre outros).
Existe alguma forma bem simples pra verificar se nesta máscara há estes caracteres ?
Espero retorno imediato…
Agradeço.[/color]
yyyy_MM_dd_NomeDoMunicipio_NomeDaPessoa_HHmm.EWC
A expressão regular para isso seria
\d{4}\d{2}\d{2}[A-Za-z0-9]+[A-Za-z0-9]+\d{2}{\d{2}.EWC
Em Java, isso seria
"\d{4}\d{2}\d{2}[A-Za-z0-9]+[A-Za-z0-9]+\d{2}{\d{2}\.EWC"
Estou supondo que você esteja sendo bem rigoroso, e o ano tenha exatamente 4 dígitos, assim como o mês e o dia, a hora e o minuto devam ter exatamente 2 dígitos.
[color=darkblue]sim… sendo q o HHmm seria a hora e o minuto que aquele arquivo foi gerado…
Só lembrando que o sistema não removerá estes caracteres… apenas verificará.
Se conter, o sistema dispara uma Exception e moverá este arquivo para outro diretório, chamado Erros.
Mas ainda não entendi como eu posso fazer esta verificação… como jogar esta expressão citada acima ?[/color]
String.matches retorna “true” se a string for válida e “false” em caso contrário. Exemplo:
String placaCarro = "ABC1234";
if (placaCarro.matches ("[A-Z]{3}\d{4}")) {
System.out.println ("Placa de carro é válida");
} else {
System.out.println ("Isto não é uma placa de carro.");
}
[color=darkblue]ouhhhh… funcionou perfeitamente…
Agradeço…
Só mais uma coisa… esta data eu tenho q pegar ela e verificar SE É uma data válida e SE NÃO É uma data futura…
A mesma coisa tenho q fazer com a Hora e o minuto
Tem idéia de como fazer essa joça ? hhehe
Valeu[/color]…
pega a substring do nome do arquivo contendo apenas a parte da data e depois faz uma verificação com java Calendar com a data atual e a data que vc esta lendo do arquivo( trate ela antes, pro formato correto). Acho que deve resolver seu problema
pois é…
eu usei a seguinte expressão…
String data = “2009_04_03”;
DateFormat format = new SimpleDateFormat(“yyyy_MM_dd”);
Date date = format.parse(data);
Daki pra baixo, não faço nem idéia de como identificar se é válido ou não…
Alguém tem idéia ??
DateFormat tem um método “setLenient”. Se você passar “false” ele vai gerar uma exceção no método “parse” se você passar uma data como “31 de fevereiro”.
Entretanto, uma data como “0009_02_03”, que seria 3 de fevereiro do ano 9 depois de Cristo, ele deixa passar, porque é uma data válida, oras bolas! (No ano 9, ou seja, quando Jesus Cristo tinha 9 + 5 = 14 anos, ele já tinha ido pregar junto aos Doutores da Lei - isso ele fez com 12 anos).
Para pegar essas anomalias você é que tem de ver isso.
[color=darkblue]hauheuaheuhauehuahe…
Doutores da lei… hauehuaheuh
Essa foi boa… :D[/color]
Não sou evangélico mas conheço essas histórias.
Gosto de usá-las porque pelo menos sei que metade da população brasileira vai conseguir entendê-las (e a outra metade vai odiar que eu me refira a elas )
E é por isso que me referi aos tais ‘doutores da lei’.
Se eu estivesse em um fórum japonês provavelmente iria me referir a Buda e àquela história do grão de mostarda:
http://www.sacred-texts.com/bud/btg/btg85.htm
(Na verdade não sei o que a história do grão de mostarda tem a ver com a validação de datas, mas sabe como é que é…)