Ny i java? Så har du her en klasse indeholdende en masse metoder som du kan anvende til validering af data.
----------------------------Start of class-----------------------------------------
public class Validate
{
public static boolean erEtStortBogstavDK(char etTegn)
// Pre: -
// Post: Returnerer true, hvis etTegn er et stort dansk bogstav
// A-Å, ellers false
{
if ((etTegn >= 'A' && etTegn <= 'Z') || etTegn == 'Æ' ||
etTegn == 'Ø' || etTegn == 'Å')
return true;
else
return false;
}
public static boolean erEtLilleBogstavDK(char etTegn)
// Pre: -
// Post: Returnerer true, hvis etTegn er et lille dansk bogstav
// a-å, ellers false
{
if ((etTegn >= 'a' && etTegn <= 'z') || etTegn == 'æ' ||
etTegn == 'ø' || etTegn == 'å')
return true;
else
return false;
}
public static boolean erEtCiffer(char etTegn)
{
if (etTegn >= '0' && etTegn <= '9')
return true;
else
return false;
}
public static boolean erBlank(char etTegn)
{
if (etTegn == ' ')
return true;
else
return false;
}
public static boolean erEMailChar(char enChar)
{
if ((enChar >= 'a' && enChar <= 'z') || enChar == '@' || enChar == '.')
return true;
else
return false;
}
public static boolean erBilRegNrDK(String etRegNr)
// Pre : -
// Post: Returnerer true, hvis etRegNr opfylder de alm. syntaktiske regler
// for bilers indregistreringsnumre i DK: 2 store bogstaver efterfulgt
// af en blank, derefter 2 cifre, en blank og 3 cifre. Ellers returneres
// false. Valideringen er ikke udtømmende og tager ikke højde for de
// såkaldte "købenumre"
{
if (etRegNr.length() != 9)
return false;
for (int i = 0; i < 9; i++)
{
switch (i)
{
case 0:
if(!erEtStortBogstavDK(etRegNr.charAt(i)))
return false;
break;
case 1:
if(!erEtStortBogstavDK(etRegNr.charAt(i)))
return false;
break;
case 2:
if(!erBlank(etRegNr.charAt(i)))
return false;
break;
case 3:
if(!erEtCiffer(etRegNr.charAt(i)))
return false;
break;
case 4:
if(!erEtCiffer(etRegNr.charAt(i)))
return false;
break;
case 5:
if(!erBlank(etRegNr.charAt(i)))
return false;
break;
case 6:
if(!erEtCiffer(etRegNr.charAt(i)))
return false;
break;
case 7:
if(!erEtCiffer(etRegNr.charAt(i)))
return false;
break;
case 8:
if(!erEtCiffer(etRegNr.charAt(i)))
return false;
break;
}
}
return true;
}
public static boolean erEnkeltNavn(String etNavn)
// Pre: -
// Post: Returnerer true hvis etNavn starter med et stort bogstav,
// som efterfølges af små bogstaver. Kan også anvendes til fx
// bynavne (husk! bynavne kan være flere ord: New York)
{
if (etNavn.length() <= 1)
return false;
else
if (!erEtStortBogstavDK(etNavn.charAt(0)))
return false;
else
for (int i = 1; i < etNavn.length(); i++)
if (!erEtLilleBogstavDK(etNavn.charAt(i)))
return false;
return true;
}
public static boolean erInitial(String enStreng)
// Pre: -
// Post: Returnerer true hvis enStreng er et stort bogstav
// efterfulgt af et punktum.
{
if (enStreng.length() != 2)
return false;
if (!erEtStortBogstavDK(enStreng.charAt(0)))
return false;
if (enStreng.charAt(1) != '.')
return false;
return true;
}
public static boolean erFuldtNavn(String etNavn)
// Pre: -
// Post: Returnerer true hvis etNavn består af mindst to og højest
// fire navne og initialer adskilte af blanke. Sidste element
// skal være et navn. Kan ikke håndtere bindestreger og navne
// som starter med lille fx 'von'
{
StringTokenizer enST = new StringTokenizer(etNavn," ");
if (enST.superfluousDel())
return false;
int tokens = enST.countTokens();
if (tokens > 4 || tokens < 2)
return false;
for (int i = 0; i < tokens - 1; i++)
{
String tempToken = enST.nextToken();
if (!erEnkeltNavn(tempToken) && !erInitial(tempToken))
return false;
}
if (!erEnkeltNavn(enST.nextToken()))
return false;
return true;
}
public static boolean erTlfNrGrp(String enStreng)
// Pre: -
// Post: Returnerer true hvis enStreng har formen:
// "99 99 99 99" hvor 9 er et vilkårligt ciffer
// ellers false
{
if (enStreng.length() != 11)
return false;
StringTokenizer enST = new StringTokenizer(enStreng," ");
int tokens = enST.countTokens();
if (tokens != 4)
return false;
for (int i = 0; i < tokens; i++)
{
String tempToken = enST.nextToken();
if (tempToken.length() != 2 ||
!erEtCiffer(tempToken.charAt(0)) ||
!erEtCiffer(tempToken.charAt(1)))
return false;
}
return true;
}
public static boolean erEMailAdresse(String enStreng)
{
// Metoden er ganske uautoriseret og overholder IKKE standarden for
// e-mail adressers korrekte syntax.
int pFør = 0, pEfter = 0, snabelA = 0;
// check at 1. og sidste karakter er bogstaver
if (enStreng.charAt(0) < 'a' || enStreng.charAt(0) > 'z' ||
enStreng.charAt(enStreng.length() -1) < 'a' ||
enStreng.charAt(enStreng.length() -1) > 'z')
return false;
for (int i = 0; i < enStreng.length(); i++)
{ //check bogstav, snabel-a eller punktum
if (!(erEMailChar(enStreng.charAt(i))))
return false;
//tæl snabel-a og check at næste karakter ikke er punktum
if (enStreng.charAt(i) == '@')
{
snabelA++;
if (enStreng.charAt(i+1) == '.')
return false;
}
//tæl punktum før og efter snabel-a og check at næste karakter
//ikke er punktum eller snabel-a
if (enStreng.charAt(i) == '.')
{
if (enStreng.charAt(i+1) == '.' || enStreng.charAt(i+1) == '@')
return false;
if (snabelA == 0)
pFør++; else pEfter++;
}
}
//check mindst et punktum før og efter snabel-a og eet snabel-a
if (pFør == 0 || pEfter == 0 || snabelA != 1)
return false;
//check landekode til sidst
int pos = 0, punktummer = 0;
String landeKode = "";
String[] landeKodeTabel = {"dk","de","uk","us"};
boolean fundet = false;
for (;punktummer < pFør + pEfter; pos++)
if (enStreng.charAt(pos) == '.')
punktummer++;
for (;pos < enStreng.length();pos++)
landeKode = landeKode + enStreng.charAt(pos);
for (int i = 0; i < landeKodeTabel.length && !fundet; i++)
if (landeKode.compareTo(landeKodeTabel[i]) == 0)
fundet = true;
if (!fundet)
return false;
return true;
}
public static boolean eMailAlt(String enStreng)
{
// Metoden er ganske uautoriseret og overholder IKKE standarden for
// e-mail adressers korrekte syntax. Formålet er at vise fordelen
// ved at anvende StringTokenizer (i forhold til forrige metode)
StringTokenizer enST = new StringTokenizer(enStreng,"@");
if (enST.countTokens() == 1)
return false; // intet snabel-a
enST = new StringTokenizer(enStreng,".@");
int antal = enST.countTokens();
String token;
if (enST.superfluousDel())
return false;
if (antal < 3)
return false;
for (int i = 0; i < antal-1; i++)
{
token = enST.nextToken();
if (token.length() < 2)
return false;
for (int j = 0; j < token.length(); j++)
if (!erEMailChar(token.charAt(j)))
return false;
}
String[] landeKodeTabel = {"dk","de","uk","us"};
boolean fundet = false;
token = enST.nextToken();
for (int i = 0; i < landeKodeTabel.length && !fundet; i++)
if (token.compareTo(landeKodeTabel[i]) == 0)
fundet = true;
if (!fundet)
return false;
return true;
}
}
-------------------------End of class----------------------------
Mvh Xor
|