範例封裝常用字元陣列(數字、英文字母、月份天數、郵件特徵符號),實作郵件格式驗證、純數字判斷、純英文判斷、閏年判斷、日期格式驗證(含閏年 2 月處理)等實用工具方法。
public class myArray {
char[] cNum = {'1','2','3','4','5','6','7','8','9','0'};
char[] cStr = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int[] iMonth = {31,28,31,30,31,30,31,31,30,31,30,31};
String[] sMail = {"@", "."};
public boolean isMail(String sPara) {
for (int i = 0; i < sMail.length; i++)
if (sPara.indexOf(sMail[i]) == -1) return false;
return true;
}
public boolean isNumber(String sPara) {
for (int i = 0; i < sPara.length(); i++) {
char cTemp = sPara.charAt(i);
boolean bTemp = false;
for (int j = 0; j < cNum.length; j++)
if (cTemp == cNum[j]) { bTemp = true; break; }
if (!bTemp) return false;
}
return true;
}
public boolean isString(String sPara) {
for (int i = 0; i < sPara.length(); i++) {
char cTemp = sPara.charAt(i);
boolean bTemp = false;
for (int j = 0; j < cStr.length; j++)
if (cTemp == cStr[j]) { bTemp = true; break; }
if (!bTemp) return false;
}
return true;
}
public boolean chickDay(int iPara) {
return iPara % 100 == 0 && iPara % 4 == 0;
}
public int chickData(String sPara) {
if (sPara.length() != 10) return -2;
String sYear = sPara.substring(0,4);
if (!isNumber(sYear)) return -2;
String sMonth = sPara.substring(5,7);
if (!isNumber(sMonth)) return -2;
String sDay = sPara.substring(8,10);
if (!isNumber(sDay)) return -2;
int iYear = Integer.parseInt(sYear);
int iMon = Integer.parseInt(sMonth);
int iDay = Integer.parseInt(sDay);
if (iMon > 12) return -1;
if (iMon == 2 && chickDay(iYear)) {
if (iDay > 29) return -1;
} else {
if (iDay > iMonth[iMon-1]) return -1;
}
return 0;
}
public static void main(String[] arges) {
myArray mA = new myArray();
System.out.println("1 bMail is " + mA.isMail("tom@163.com"));
System.out.println("2 bMail is " + mA.isMail("tom@163com"));
System.out.println("1 bIsNum=" + mA.isNumber("1234"));
System.out.println("2 bIsNum=" + mA.isNumber("123r4"));
System.out.println("1 bIsStr=" + mA.isString("wer"));
System.out.println("2 bIsStr=" + mA.isString("wer3"));
System.out.println("1 iIsTime=" + mA.chickData("2003-12-98"));
System.out.println("2 iIsTime=" + mA.chickData("2003-111-08"));
System.out.println("3 iIsTime=" + mA.chickData("2003-10-08"));
System.out.println("4 iIsTime=" + mA.chickData("2000-02-30"));
}
}
主程式測試各驗證方法,輸出真假結果與日期驗證代碼(0=正確,-1=月日錯誤,-2=格式錯誤)。