public sealed class
FiscalCode { private string _cf;
private static Hashtable
Odd; private static Hashtable Even; private static
Hashtable LastChar;
static FiscalCode() { Odd=new
Hashtable(26); Even=new
Hashtable(26); LastChar=new Hashtable(26);
Odd.Add('A',1); Odd.Add('B',0); Odd.Add('C',5); Odd.Add('D',7); Odd.Add('E',9); Odd.Add('F',13); Odd.Add('G',15); Odd.Add('H',17); Odd.Add('I',19); Odd.Add('J',21); Odd.Add('K',2); Odd.Add('L',4); Odd.Add('M',18); Odd.Add('N',20); Odd.Add('O',11); Odd.Add('P',3); Odd.Add('Q',6); Odd.Add('R',8); Odd.Add('S',12); Odd.Add('T',14); Odd.Add('U',16); Odd.Add('V',10); Odd.Add('W',22); Odd.Add('X',25); Odd.Add('Y',24); Odd.Add('Z',23); Odd.Add('0',1); Odd.Add('1',0); Odd.Add('2',5); Odd.Add('3',7); Odd.Add('4',9); Odd.Add('5',13); Odd.Add('6',15); Odd.Add('7',17); Odd.Add('8',19); Odd.Add('9',21);
Even.Add('A',0); Even.Add('B',1); Even.Add('C',2); Even.Add('D',3); Even.Add('E',4); Even.Add('F',5); Even.Add('G',6); Even.Add('H',7); Even.Add('I',8); Even.Add('J',9); Even.Add('K',10); Even.Add('L',11); Even.Add('M',12); Even.Add('N',13); Even.Add('O',14); Even.Add('P',15); Even.Add('Q',16); Even.Add('R',17); Even.Add('S',18); Even.Add('T',19); Even.Add('U',20); Even.Add('V',21); Even.Add('W',22); Even.Add('X',23); Even.Add('Y',24); Even.Add('Z',25); Even.Add('0',0); Even.Add('1',1); Even.Add('2',2); Even.Add('3',3); Even.Add('4',4); Even.Add('5',5); Even.Add('6',6); Even.Add('7',7); Even.Add('8',8); Even.Add('9',9);
LastChar.Add(0,'A'); LastChar.Add(1,'B'); LastChar.Add(2,'C'); LastChar.Add(3,'D'); LastChar.Add(4,'E'); LastChar.Add(5,'F'); LastChar.Add(6,'G'); LastChar.Add(7,'H'); LastChar.Add(8,'I'); LastChar.Add(9,'J'); LastChar.Add(10,'K'); LastChar.Add(11,'L'); LastChar.Add(12,'M'); LastChar.Add(13,'N'); LastChar.Add(14,'O'); LastChar.Add(15,'P'); LastChar.Add(16,'Q'); LastChar.Add(17,'R'); LastChar.Add(18,'S'); LastChar.Add(19,'T'); LastChar.Add(20,'U'); LastChar.Add(21,'V'); LastChar.Add(22,'W'); LastChar.Add(23,'X'); LastChar.Add(24,'Y'); LastChar.Add(25,'Z'); }
public FiscalCode(string
CF) { _cf=CF; }
public bool
IsValid { get { if(_cf.Length!=16) return
false;
int sum=0; for(int
i=0;i<15;i++) { if(i%2==0) sum+=(int)FiscalCode.Odd[_cf[i]]; else sum+=(int)FiscalCode.Even[_cf[i]]; }
if((char)FiscalCode.LastChar[sum%26]==_cf[15]) return
true; else return
false; } } }
powered by IMHO 1.2