887 messaggi dal 21 marzo 2008
Ciao a tutti
qualcuno ha un programmino scritto in c# per controllare se il codice fiscale inserito è esatto? Il controllo dev'essere fatto sui dati anagrafici inseriti dall'utente.
Grazie mille
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

se cerchi su google ne trovi a bizzeffe di esempi, veramente a bizzeffe. ne ho usato uno anche io ma non saprei dirti quale.
HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
887 messaggi dal 21 marzo 2008
Ne ho trovato uno:
 public static string creaCodiceFiscale(string nome,string cognome,DateTime data_nascita, string sesso,string city,string provincia)
    {
        string temp;
        string vocali;
        string consonanti;
        int i;
        int appo_num;
        int temp_num;
        string txt_cod_fis;
          
        txt_cod_fis = string.Empty;
                
        //RICAVO IL COGNOME (123)        
        cognome = cognome.ToUpper();
        vocali = string.Empty;
        consonanti = string.Empty;
        string set_vocali = "AEIOU";
        string set_consonanti = "BCDFGHJKLMNPQRSTVWXYZ";

        for(i=0;i<cognome.Length; i++)
        {            
            if(set_vocali.IndexOf(cognome.Substring(i,1))>-1)
            {
                vocali = vocali + cognome.Substring(i,1);
            }
            else if(set_consonanti.IndexOf(cognome.Substring(i,1))>-1)
            {
                consonanti = consonanti + cognome.Substring(i,1);
            }
            else
            {
                // E' uno spazio, un apostrfo o altro che non va considerato
            }
           if(consonanti.Length == 3) i = cognome.Length;
        }
        if(consonanti.Length < 3) consonanti = consonanti + vocali.Substring(0 , 3 - consonanti.Length);
        if(consonanti.Length < 3) consonanti = consonanti + String(3 - consonanti.Length, "X");
        txt_cod_fis = consonanti;
                
        // RICAVO IL NOME (456)        
        nome = nome.ToUpper();
        vocali = string.Empty;
        consonanti = string.Empty;
        for(i=0;i<nome.Length;i++)
        {            
            if(set_vocali.IndexOf(nome.Substring(i,1))>-1)
            {
                vocali = vocali + nome.Substring(i,1);
            }
            else if(set_consonanti.IndexOf(nome.Substring(i,1))>-1)
            {
                consonanti = consonanti + nome.Substring(i,1);
            }
            else
            {
                // E' uno spazio, un apostrfo o altro che non va considerato
            }           
        }
 
        if(consonanti.Length >= 4)
        {
            // isolo la prima, terza e quarta consonante
            consonanti = consonanti.Substring(0, 1) + consonanti.Substring(2, 2);
        }
        else if(consonanti.Length == 3)
        {
            // Va bene cosi'
        }
        else
        {
            // Aggiungo le vocali
            consonanti = (consonanti + vocali).Substring(0, 3);
            // se non basta, aggiungo le X
            if(consonanti.Length < 3) consonanti = (consonanti + "XXX").Substring(0, 3);
        }
        txt_cod_fis = txt_cod_fis + consonanti;
        
        //Anno di nascita (78)        
        txt_cod_fis = txt_cod_fis + data_nascita.ToString("yy");
        
        //Mese di nascita(9)        
        txt_cod_fis = txt_cod_fis + ("ABCDEHLMPRST").Substring(data_nascita.Month-1, 1);
                
        //Giorno di nascita(0A)        
        if(sesso.ToUpper() == "F")
        {
            txt_cod_fis = txt_cod_fis + (data_nascita.Day + 40).ToString();
        }
        else
        {
            if(data_nascita.Day.ToString().Length == 1)
            {
          txt_cod_fis = txt_cod_fis + "0" + data_nascita.Day.ToString();
            }
        else
            {
          txt_cod_fis = txt_cod_fis + data_nascita.Day.ToString();
        }
        }        
        
        //Localit di nascita (BCDE)        
        txt_cod_fis = txt_cod_fis + getCodiceCatastale(city, provincia);
        
        //Ultima lettera (F)        
        //Controllo caratteri pari
        temp_num = 0;
        i = 0;
        do
        {
            // I DISPARI
            string set_dispari = "B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYYXX";
            appo_num = set_dispari.IndexOf(txt_cod_fis.Substring(i, 1));
            temp_num = temp_num + (appo_num & 0x7FFE) / 2;
            i = i + 1;
            if (i >= 15) break;
        
            // I PARI
            string set_pari = "A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ";
            appo_num = set_pari.IndexOf(txt_cod_fis.Substring(i, 1));
            temp_num = temp_num + (appo_num & 0x7FFE) / 2;
            i = i + 1;
        }while(i<15);//??
        temp_num = temp_num % 26;
        txt_cod_fis = txt_cod_fis.Replace(" ","") + ("ABCDEFGHIJKLMNOPQRSTUVWXYZ").Substring(temp_num, 1);
        
        // Ecco qui il codice bello finito
        return txt_cod_fis;
    }
5 messaggi dal 21 aprile 2015
in alternativa puoi utilizzare questo webservice

http://webservices.dotnethell.it/codicefiscale.asmx

ti permette di operare sui codici fiscali
sia a livello di controllo (sempre per quanto riguarda il formalismo di scrittura)
sia a livello di calcolo di codice fiscale!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.