驗證身份證字號的正確性
- 2008-12-25
- 24205
- 0
對於會員註冊或是資料填寫的時候,一定會用到的身份證字號驗證公式,提供給有需要的朋友。
- 2008.12.25修正當身份證是X、Y、Z時會驗證錯誤的bug
首先我們要知道身份證字號的驗證方式為何【身份證字號規則】
但是我相信很多人不想研究...所以整段Code又出現啦
public string IDChk(string vid)
{
List<string> FirstEng = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "W", "Z", "I", "O" };
string aa = vid.ToUpper();
bool chackFirstEnd = false;
if (aa.Trim().Length == 10)
{
byte firstNo = Convert.ToByte(aa.Trim().Substring(1, 1));
if (firstNo > 2 || firstNo < 1)
{
return "2";
}
else
{
int x;
for (x = 0; x < FirstEng.Count; x++)
{
if (aa.Substring(0, 1) == FirstEng[x])
{
aa = string.Format("{0}{1}", x + 10, aa.Substring(1, 9));
chackFirstEnd = true;
break;
}
}
if (!chackFirstEnd)
return "3";
int i = 1;
int ss = int.Parse(aa.Substring(0, 1));
while (aa.Length > i)
{
ss = ss + (int.Parse(aa.Substring(i, 1)) * (10 - i));
i++;
}
aa = ss.ToString();
if (vid.Substring(9, 1) == "0")
{
if (aa.Substring(aa.Length - 1, 1) == "0")
{
return "0";
}
else
{
return "4";
}
}
else
{
if (vid.Substring(9, 1) == (10 - int.Parse(aa.Substring(aa.Length - 1, 1))).ToString())
{
return "0";
}
else
{
return "4";
}
}
}
}
else
{
return "1";
}
}
//回傳1 代表字數不到10
//回傳2代表第二碼非1,2
//回傳3 代表首碼有誤
//回傳4代表檢查碼不對
把它寫成一個方法、類別都可以很方便的應用,如果有錯誤還請利用回報告知呢








Roslyn 魔法工坊:打造你的 Source Generator [2025-12-20]開課 共7H
回應討論