0 Replies Latest reply on Aug 3, 2009 3:40 AM by Nikynik

    [FLEX] VALIDATE CF

    Nikynik

      Hi, someone have a code to validate CF in FLEX like this in java?

       

      public static boolean isValid(String parCF){
            // conversione della stringa in caratteri maiuscoli
            String cf = parCF.toUpperCase();
            /*
             * eliminazione degli eventuali spazi
             */
            cf = StringMng.removeChars(' ', cf);
            /*
             * verifica della lunghezza del codice fiscale
             */
            if (cf.length() == 16){
               /*
                * creazione della matrice con i caratteri dell'alfabeto
                */
               char[] Carattere = {'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', '0',
                              '1', '2', '3', '4', '5', '6', '7', '8', '9'};
               /*
                * creazione della matrice con i valori attribuiti ai caratteri 
                * dispari, corrispondenti alla matrice di caratteri
                */
               int[] ValoriDispari = {1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4,
                                 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22,
                                 25, 24, 23, 1, 0, 5, 7, 9, 13, 15, 17, 19,
                                 21};
               /*
                * creazione della matrice con i valori attribuiti ai caratteri 
                * pari, corrispondenti alla matrice di caratteri
                */
               int[] ValoriPari = new int[36];
               for (int i = 0; i < 26; i++){
                  ValoriPari[i] = i;
               }
               for (int i = 26; i < 36; i++){
                  ValoriPari[i] = i - 26;
               }
               // conversione della stringa da esaminare ad una matrice di caratteri
               char[] caratteriCF = cf.toCharArray();
               int valore = 0;
               for (int i = 0; i < caratteriCF.length - 1; i++){
                  /*
                   * somma delle posizioni pari in base ai valori 
                   * corrispondenti contenuti nell'array ValoriPari
                   * (tranne l'ultimo carattere che è quello di controllo)
                   */
                  if ((i+1) % 2 == 0){
                     for (int j = 0; j < Carattere.length; j++){
      
                        if (caratteriCF[i] == Carattere[j]){
                           valore += ValoriPari[j];
                        }
                     }
                     /*
                      * somma delle posizioni dispari in base ai valori 
                      * corrispondenti contenuti nell'array ValoriDispari
                      */
                  }else{
                     for (int j = 0; j < Carattere.length; j++){
                        if (caratteriCF[i] == Carattere[j]){
                           valore += ValoriDispari[j];
                        }
                     }
                  }
               }
               /*
                * ottenimento del resto della divisione per 26 e 
                * valutazione del carattere di controllo (ultimo carattere)
                */
               valore %= 26;
               for (int i = 0; i < 26; i++){
                  /*
                   * verifica che il valore dell'ultimo carattere corrisponda
                   * al valore ottenuto attraverso l'algoritmo di somma precedente
                   */
                  if (caratteriCF[caratteriCF.length - 1] == Carattere[i]){
                     if (valore == i){
                        return true;
                     }else{
                        return false;
                     }
                  }
               }
               return false;
      
            }else{
               return false;
            }
      
         }
      }