コードバリデーター:ID番号を確認する

ylbtech-Code-Validator:ID番号を確認する

 

1. トップに戻る
1、
using System; 

名前空間Sp.Common 
{ 
    public  class ValidatorHelper 
    { 
        ///  <summary>   
        /// IDカードの番号に対応するアドレス  
         ///  </ summary>   
        // enum IDAddress  
         // {  
         //     Beijing = 11、Tianjin = 12、河北= 13、山西= 14、内モンゴル= 15、遼寧= 21、吉林= 22、黒竜江= 23、上海= 31、江蘇= 32、浙江= 33、  
         //     安徽= 34、福建= 35、江西= 36、山東= 37、河南= 41、湖北= 42、湖南= 43、広東= 44、広西= 45、海南= 46、重慶= 50、四川= 51、  
         //     貴州= 52、雲南= 53、チベット= 54、陝西= 61、甘粛= 62、青海= 63、寧夏= 64、新疆= 65、台湾= 7​​1、香港= 81、マカオ= 82、海外= 91  
        // }   

        ///  <summary>   
        /// 世代IDカード番号(15桁)を確認します  
         /// [15桁の番号;対応する都道府県の住所と一致します;誕生日は正しく一致します]  
         ///  </ summary>   
        ///  <param name = "input"> 検証する文字列</ param>   
        ///  <returns> 一致するかどうか</  
         return > public  static  bool IsIDCard15(string input)
        { 
            // 15桁に変換できるかどうかを検証するInteger   
            long l = 0 ;
             if(!Long .TryParse(input、out l)|| l.ToString()。Length!= 15 
            {
                リターン falseに; 
            } 
            //は一致州確認  
             @ ビット1,2-州政府市役所コード5の符号ビット3,4の数であるエリアコードのための1〜6を、 6桁の数字は、郡および地区の政府コードです。  
            文字列アドレス= " 11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51、 52,53,54,61,62,63,64,65,71,81,82,91、" ;
             if(!Address.Contains(input.Remove(2)+ " " ))
            { 
                return  false ; 
            } 
            // 検証誕生日の一致   
            文字列 BIRTHDATE = input.Substring(66).Insert(4" / ").Insert(2" / " ); 
            のDateTime DT; 
            IF(DateTime.TryParse(BIRTHDATE、!OUTのDT))
            { 
                リターン falseに; 
            } 
            戻り trueに; 
        } 

        ///  <概要>   
        /// 第2世代のID番号(18桁、GB11643-1999規格)を確認します  
         /// [長さは18桁です。最初の17桁は数字で、最後の桁(チェックコード)は大文字と小文字のxにすることができます。対応する州の住所と一致します。誕生日を正しく一致させることができます。チェックコードを正しく一致させることができます]  
         ///  </ summary>   
        ///  <param name = "input"> 検証する文字列</ param>   
        /// <returns> 一致するか</  
         return > public  static  bool IsIDCard18(string input)
        { 
            // 正しい整数に変換できることを確認する   
            long l = 0 ;
             if(!long .TryParse(input.Remove(17)、out l) || l.ToString()。長さ!= 17 ||!long .TryParse(input.Replace(' x '' 0 ').Replace(' X '' 0 ')、out l))
            { 
                戻る falseに; 
            } 
            //は一致州確認  
             @ ビット1,2-州政府市役所符号の符号ビット3,4の数であるエリアコードのための6 1〜5 、郡と地区の政府コードは6桁。  
            文字列アドレス= " 11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51、 52,53,54,61,62,63,64,65,71,81,82,91、" ;
             if(!Address.Contains(input.Remove(2)+ " " ))
            { 
                return  false ; 
            } 
            // 検証誕生日の一致   
            文字列 BIRTHDATE = input.Substring(68).Insert(6。 " / ").Insert(4。 " / " ); 
            日時DT、
            IF(DateTime.TryParse(BIRTHDATE ,! OUT DT))
            { 
                リターン falseに; 
            } 
            // チェックコードの検証  
             // 補正チェックコード:  
             // (1)17桁の本体コードの加重和式   
             // S =和(Ai * Wi)、i = 0、...、16、最初の17桁の重みの合計   
             / / Ai:i番目の位置のID番号のデジタル値を   
             示します// Wi:i番目の位置の重み係数を示します   
             //Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2   
             // (2)modを計算する   
             // Y = mod(S、11)   
             // (3)modによって対応するチェックコードを取得する   
             / / Y:0 1 2 3 4 5 6 7 8 9 10   
             // チェックコード:1 0 X 9 8 7 6 5 4 3 2    
            string [] arrVarifyCode =(" 1,0、x、9,8,7、 6,5,4,3,2 ").split(' ' );
             文字列 []のWi =(" 7,9,10,5,8,4,2,1,6,3,7,9、 10,5,8,4,2 ").Split(' ' );
             char [] Ai = input.Remove(17).ToCharArray();
            int sum = 0 ;
            forint i = 0 ; i < 17 ; i ++ 
            { 
                sum + = int .Parse(Wi [i])* int .Parse(Ai [i] .ToString()); 
            } 
            int y = -1 ; 
            Math.DivRem(合計、11アウトy);
            もし(arrVarifyCode [Y]!= input.Substring(171 ).ToLower())
            { 
                戻り ; 
            } 
            return  true ; 
        } 

        ///  <summary>   
        /// ID番号を確認する(第1世代と第2世代のID番号を区別しない)  
         ///  </ summary>   
        ///  <param name = "input"> 確認待ちString </ param>   
        ///  <returns> 一致するか</  
         return > public  static  bool IsIDCard(string input)
        { 
            if(input.Length == 18 return IsIDCard18(input);
             else  if(input.Length == 15 戻るIsIDCard15(入力);
            それ以外の場合は
                falseを返し ます
        } 

    } 
}
2、
2. トップに戻る
 
3. トップに戻る
 
4. トップに戻る
 
5. トップに戻る
 
 
6. トップに戻る
 
警告する 著者:ylbtech
出典:http://ylbtech.cnblogs.com/
この記事は、執筆者に属し、公園の合計をブログ、転載を歓迎するが、作者の同意なしに、このセクションで宣言されたそれ以外の場合は、保持され、記事ページの見かけ上の位置に元の接続を指定する必要があります法的責任を追及する権利を留保します。

おすすめ

転載: www.cnblogs.com/storebook/p/12685759.html