今天人在外面臨時要寫,時間又不夠,正好在 javaworld 有,也順便分享給大家。
http://www.javaworld.com.tw/jute/post/view?bid=35&id=51760&sty=3&age=0&tpg=1&ppg=1#51760
private boolean isIdNumber(String ID) { boolean rule = false; if (ID.length() == 10) { ID = ID.toUpperCase(); byte s[] = ID.getBytes(); if (s[0] >= 65 && s[0] <= 90) { int[] c = new int[11]; int a[] = {10, 11, 12, 13, 14, 15, 16, 17, 34, 18, 19, 20, 21, 22, 35, 23, 24, 25,26, 27, 28, 29, 32, 30, 31, 33}; c[0] = a[ (s[0]) - 65] / 10; c[1] = a[ (s[0]) - 65] % 10; for (int i = 1; i <= 9; i++) { c[i + 1] = s[i] - 48; } int count = c[0]; for (int i = 1; i <= 9; i++) { count += c[i] * (10 - i); } if ( ( (count % 10) + c[10]) == 10) { rule = true; } } } return (rule); }
A=65(ASCII)
Z=90(ASCII)
A=10 台北市 J=18 新竹縣 S=26 高雄縣
B=11 台中市 K=19 苗栗縣 T=27 屏東縣
C=12 基隆市 L=20 台中縣 U=28 花蓮縣
D=13 台南市 M=21 南投縣 V=29 台東縣
E=14 高雄市 N=22 彰化縣 * W=32 金門縣
F=15 台北縣 * O=35 新竹市 X=30 澎湖縣
G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山
H=17 桃園縣 Q=24 嘉義縣 * Z=33 連江縣
* I=34 嘉義市 R=25 台南縣