日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 身份证号码15位和18位验证

發布時間:2024/3/24 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 身份证号码15位和18位验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
///?<summary> ///?身份證 ///?</summary> [Serializable] public?class?IDCard {///?<summary>///?身份證號///?</summary>public?string?IDCardNum?{?get;?set;?}///?<summary>///?行政區///?</summary>public?string?Canton?{?get;?private?set;?}///?<summary>///?出生日期///?</summary>public?DateTime?Birthday?{?get;?private?set;?}///?<summary>///?性別(0-女;1-男)///?</summary>public?int?Gander?{?get;?private?set;?}///?<summary>///?是否為合法身份證號///?</summary>public?bool?IsIDCard?{?get;?private?set;?}public?IDCard()?{?}public?IDCard(string?IDnumber){this.IDCardNum?=?IDnumber;}///?<summary>///?///?</summary>///?<param?name="number"></param>///?<returns></returns>public?static?IDCard?Parse(string?number){IDCard?idCard?=?new?IDCard(number);const?int?s5bits?=?15;const?int?s8bits?=?18;#region?15位if?(number.Length?==?s5bits)??//15位的處理{//檢查輸入是否為數字for?(int?i?=?0;?i?<?number.Length;?i++){if?((number[i]?<?'0')?||?(number[i]?>?'9')){throw?new?FormatException("身份證號錯誤");}}//出生日期string?birthday?=?"19"?+?number.Substring(6,?6);string?year?=?birthday.Substring(0,?4);string?month?=?birthday.Substring(4,?2);string?day?=?birthday.Substring(6,?2);birthday?=?string.Format("{0}-{1}-{2}",?year,?month,?day);DateTime?date?=?new?DateTime();if?(DateTime.TryParse(birthday,?out?date)){idCard.Birthday?=?date;}else{throw?new?InvalidCastException("身份證號出生日期錯誤");}//性別if?((number[s5bits?-?1]?==?'0')?||?(number[s5bits?-?1]?%?2?==?0)){idCard.Gander?=?0;?//?女}else{idCard.Gander?=?1;?//?男}idCard.IsIDCard?=?true;return?idCard;}#endregion#region?18位else?if?(number.Length?==?s8bits)??//18位的處理{//?檢查前17位是否為數字for?(int?i?=?0;?i?<?number.Length?-1;?i++){if?((number[i]?<?'0')?||?(number[i]?>?'9')){throw?new?FormatException("身份證號錯誤");}}char?end?=?number[s8bits?-?1];??//最后一位//最后1位是x轉成大寫Xif?(end?==?'x'){end?=?'X';number?=?number.Substring(0,?s8bits?-?1)?+?end;}if?(!(end?==?'X'?||?(end?>=?'0'?&&?end?<=?'9'))){throw?new?FormatException("身份證號錯誤");}///?校驗int?num?=?0;char?proof;for?(int?i?=?17;?i?>?0;?i--){num?=?num?+?(int)(Math.Pow(2,?i)?%?11)?*?(number[17?-?i]?-?48);}num?%=?11;switch?(num){case?0:proof?=?'1';break;case?1:proof?=?'0';break;case?2:proof?=?'X';break;default:proof?=?(char)(12?-?num?+?48);break;}if?(end?!=?proof)??//最后一位與校驗碼不符{throw?new?FormatException("身份證號錯誤");}//出生日期string?birthday?=?number.Substring(6,?8);string?year?=?birthday.Substring(0,?4);string?month?=?birthday.Substring(4,?2);string?day?=?birthday.Substring(6,?2);birthday?=?string.Format("{0}-{1}-{2}",?year,?month,?day);DateTime?date?=?new?DateTime();if?(DateTime.TryParse(birthday,?out?date)){idCard.Birthday?=?date;}else{throw?new?InvalidCastException("身份證號出生日期錯誤");}//行政區idCard.Canton?=?number.Substring(0,?6);//性別if?((number[16]?==?'0')?||?(number[16]?%?2?==?0)){idCard.Gander?=?0;??//女}else{idCard.Gander?=?1;??//男}idCard.IsIDCard?=?true;return?idCard;}#endregionelse{throw?new?FormatException("無效的身份證號碼位數:"?+?number.Length);}}public?static?bool?TryParse(string?number,?out?IDCard?card){IDCard?idCard?=?null;bool?isIdCard?=?true;try{Parse(number);}catch?(Exception){isIdCard?=?false;}card?=?idCard;return?isIdCard;} }

轉載于:https://www.cnblogs.com/fanying/p/10919038.html

總結

以上是生活随笔為你收集整理的C# 身份证号码15位和18位验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。