Java Isdate Funksjon

Programmerere ofte ønsker å sikre at databrukere vil gå inn i sine programmer vil følge bestemte formater eller standarder. En dato innreise er et eksempel på en slik inngang. Datoformater kan variere, avhengig av region eller vane for brukeren. Hvis programmereren begrenser hvordan en bruker kan skrive inn en dato, hun da kan lage en mønstergjenkjenningsprogram som kan lese strenger og avgjøre om de representerer datoer. The Pattern objekt i Java, sammen med regulære uttrykk, kan lage matchende datoer enkel og grei.

Dato funksjon

Til å begynne en funksjon som sjekker datoformater, må programmereren vurdere hvilke formater å akseptere. I denne diskusjonen, programmerer aksepterer datoer med bindestrek ( "00-00-0000") og prikker ( "00.00.0000"). Utfordringen er altså å matche mønstre for datoer i begge disse formatene. For det første vil programmereren konstruere en klasse som inneholder en "isDate" -metoden, som godtar en streng som representerer en dato:

import java.util.regex.Pattern;
import java.util.ArrayList;

public class DateFinder {

public static boolean isDate (String dato) {

}
}

Regular Expressions

Vanlige uttrykk er strenger av tegn som kan brukes til å matche mønstre i teksten. Mønsteret "beskriver en søkestreng", og gir et vanlig uttrykk mønster matcher for å søke linjer med tekst for forekomster av mønstre. Den isDate funksjonen vil bruke regulære uttrykk strenger å bestemme riktig datoformater. I det følgende eksempel er isDate funksjon utstyrt med tre strengvariabler som representerer regulære uttrykk mønstre som tilsvarer årets formater riktig dag, måned og:

String day = "(([12]\\d)|(3[01])|(0?[1-9]))";
String month = "((1[012])|(0\\d))";
String year = "\\d{4}";

Mønster Creation, datoformater

For å kunne bruke regulære uttrykk størrelser bruker programmereren "Pattern" Java-objekt. Dette objektet vil ta et regulært uttrykk streng og "kompilere" det, noe som gjør den klar til bruk i matchende mønstre i strenger. I dette eksempelet, vil bare to formater få lov ( "dato-måned-år" eller "date.month.year"), men andre kan defineres av programmereren:

Mønster date_formats = ny Pattern.compile (dag + "[-].» + Måned + "[-].» + År));

Match Dato Patterns

Når programmereren har samlet det vanlige uttrykket å matche dato, er samsvarer med mønsteret til datoen tilbød alt hun trenger å gjøre. Bruke "treff" metoden av mønsteret objektet, kan programmereren returnere en boolsk verdi av om en dato matcher formatet gitt:

date = "22-12-1980";
Matcher m = date_format.matches (dato);
tilbake m.matches (); // returnerer true