/// <summary> /// 우편번호가 올바른 형식인 지 확인함. /// </summary> /// <param name="Value">우편번호</param> /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param> /// <example> /// Console.WriteLine(IsZipCode("435050", out ErrMsgIs)); //true /// Console.WriteLine(IsZipCode("435-050", out ErrMsgIs)); //true /// Console.WriteLine(IsZipCode("43550", out ErrMsgIs)); //false /// Console.WriteLine(IsZipCode("43-5050", out ErrMsgIs)); //false /// </example> public static bool IsZipCode(string Value, out string ErrMsgIs) { ErrMsgIs = ""; //435-050의 -를 뺌. int PosDash = Value.IndexOf('-'); if (PosDash == 3) { Value = Value.Substring(0, 3) + Value.Substring(4, 3); } if (!CValid.IsDigit(Value)) { ErrMsgIs = "우편번호가 숫자형식이 아닙니다."; return(false); } if (Value.Length != 6) { ErrMsgIs = "우편번호가 6자리가 아닙니다."; return(false); } return(true); }
/// <summary> /// 사업자번호가 올바른 형식인 지 확인함. /// </summary> /// <param name="Value">확인할 사업자번호</param> /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param> /// <example> /// string ErrMsgIs; /// /// Console.WriteLine(IsSaupNo("1168135609", out ErrMsgIs)); //마니텔레콤 /// Console.WriteLine(IsSaupNo("2168110233", out ErrMsgIs)); //(주)탐경 /// Console.WriteLine(IsSaupNo("216-81-10233", out ErrMsgIs)); //(주)탐경 /// Console.WriteLine(IsSaupNo("2168110230", out ErrMsgIs)); //false /// </example> public static bool IsSaupNo(string Value, out string ErrMsgIs) { ErrMsgIs = ""; //-를 삭제함. int PosDash = Value.IndexOf('-'); if (PosDash != -1) { StringBuilder sb = new StringBuilder(Value); Value = sb.Replace("-", "").ToString(); } if (!CValid.IsDigit(Value)) { ErrMsgIs = "사업자등록번호가 숫자 형식이 아닙니다."; return(false); } if (Value.Length != 10) { ErrMsgIs = "사업자등록번호가 10자리가 아닙니다."; return(false); } /* * 다음과 같은 방법으로 사업자 번호의 마지막 번호가 만들어짐. * 1. 9번째 자리에 5를 곱함. 이때 한자리 수가 나오면 끝에 0을 붙임. * 2. 다음 a, b, c를 모두 더한 값을 구함. * a : 1의 결과에서 1, 4, 7번째의 숫자를 더함. * b : 2, 5, 8번째의 숫자를 더하고 3을 곱함. * c : 3, 6번째의 숫자를 더하고 7을 곱함. * 3. 구해진 값의 2번째 자리의 숫자를 구함. * 4. 9에서 구해진 값을 뺀 후, 10을 나눈 나머지 값을 구함. */ int[] aNum = new int[10]; for (int i = 0; i < 10; i++) { aNum[i] = Convert.ToInt32(Value.Substring(i, 1)); } string s = (aNum[8] * 5).ToString(); if (s.Length == 1) { s += s + "0"; } s = ( (Convert.ToInt32(s) + aNum[0] + aNum[3] + aNum[6]) + ((aNum[1] + aNum[4] + aNum[7]) * 3) + ((aNum[2] + aNum[5]) * 7) ).ToString(); s = s.Substring(1, 1); int CheckDigit = (9 - Convert.ToInt32(s)) % 10; if (CheckDigit != aNum[9]) { ErrMsgIs = "올바른 사업자등록번호가 아닙니다."; return(false); } return(true); }
/// <summary> /// 주민등록번호가 올바른 형식인 지 확인함. /// </summary> /// <param name="Value">확인할 주민번호</param> /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param> /// <example> /// string ErrMsgIs; /// /// if (!IsJumin("710131-1121513", out ErrMsgIs)) /// { /// Console.WriteLine(ErrMsgIs); /// } /// else /// { /// Console.WriteLine("올바른 주민번호입니다"); /// } /// </example> public static bool IsJumin(string Value, bool IsCheckDigit, out string ErrMsgIs) { ErrMsgIs = ""; int PosDash = Value.IndexOf('-'); if (PosDash != -1) { Value = Value.Substring(0, PosDash) + Value.Substring(PosDash + 1); } if (!CValid.IsDigit(Value)) { ErrMsgIs = "주민등록번호는 숫자만 가능합니다."; return(false); } if (Value.Length != 13) { ErrMsgIs = "주민등록번호는 13자리여야만 합니다."; return(false); } string DateCheck = Value.Substring(0, 2) + "-" + Value.Substring(2, 2) + "-" + Value.Substring(4, 2); if (!CValid.IsDateTime(DateCheck)) { ErrMsgIs = "주민등록번호의 생년월일 부분은 날짜 형식이어야만 합니다."; return(false); } int Sex = Convert.ToInt32(Value.Substring(6, 1)); if ((Sex < 1) || (Sex > 4)) { ErrMsgIs = "주민등록번호의 두번째 부분의 첫번째 자리는 성별을" + " 나타내므로 1, 2, 3, 4만 가능합니다."; return(false); } if (IsCheckDigit) { /* * 다음과 같은 방법으로 주민 번호의 마지막 번호가 만들어짐. * 1. 각 문자열에 2부터 1씩 증가시켜 9까지 순서대로 더함. * 2. 이 값들을 모두 더함. * 3. 모두 더한 값에서 11로 나눈 나머지 값을 구함. * 4. 11에서 그 나머지 값을 뺀 뒤, 그것을 10으로 나눈 나머지 값을 구함. */ int SumOfNum = (Convert.ToInt32(Convert.ToString(Value[0])) * 2) + (Convert.ToInt32(Convert.ToString(Value[1])) * 3) + (Convert.ToInt32(Convert.ToString(Value[2])) * 4) + (Convert.ToInt32(Convert.ToString(Value[3])) * 5) + (Convert.ToInt32(Convert.ToString(Value[4])) * 6) + (Convert.ToInt32(Convert.ToString(Value[5])) * 7) + (Convert.ToInt32(Convert.ToString(Value[6])) * 8) + (Convert.ToInt32(Convert.ToString(Value[7])) * 9) + (Convert.ToInt32(Convert.ToString(Value[8])) * 2) + (Convert.ToInt32(Convert.ToString(Value[9])) * 3) + (Convert.ToInt32(Convert.ToString(Value[10])) * 4) + (Convert.ToInt32(Convert.ToString(Value[11])) * 5); int CheckDigit = (11 - (SumOfNum % 11)) % 10; if (Convert.ToInt32(Value.Substring(12, 1)) != CheckDigit) { ErrMsgIs = "올바른 형식의 주민등록번호가 아닙니다."; return(false); } } return(true); }
/// <summary> /// 주민번호의 체크디지트를 생성함. /// </summary> /// <param name="YYMMDD">YYMMDD 형식의 년월일</param> /// <param name="SixDigit">두번째 부분의 여섯자리</param> /// <param name="ErrMsgIs">리턴값이 ""일 때 설정되는 에러 메세지</param> /// <example> /// string ErrMsgIs; /// /// Console.WriteLine(GenerateJuminNo("710131", "999999", out ErrMsgIs)); //"" /// Console.WriteLine(GenerateJuminNo("710131", "abcdef", out ErrMsgIs)); //"" /// Console.WriteLine(GenerateJuminNo("710131", "111111", out ErrMsgIs)); //0 /// Console.WriteLine(GenerateJuminNo("710131", "112151", out ErrMsgIs)); //3 /// </example> public static string GenerateJuminNo(string YYMMDD, string SixDigit, out string ErrMsgIs) { ErrMsgIs = ""; string Value = YYMMDD + SixDigit; if (!CValid.IsDigit(Value)) { ErrMsgIs = "주민등록번호는 숫자만 가능합니다."; return(""); } if (Value.Length != 12) { ErrMsgIs = "마지막 숫자를 제외한 주민등록번호는 12자리여야만 합니다."; return(""); } string DateCheck = Value.Substring(0, 2) + "-" + Value.Substring(2, 2) + "-" + Value.Substring(4, 2); if (!CValid.IsDateTime(DateCheck)) { ErrMsgIs = "주민등록번호의 생년월일 부분은 날짜 형식이어야만 합니다."; return(""); } int Sex = Convert.ToInt32(Value.Substring(6, 1)); if ((Sex < 1) || (Sex > 4)) { ErrMsgIs = "주민등록번호의 두번째 부분의 첫번째 자리는 성별을" + " 나타내므로 1, 2, 3, 4만 가능합니다."; return(""); } /* * 다음과 같은 방법으로 주민 번호의 마지막 번호가 만들어짐. * 1. 각 문자열에 2부터 1씩 증가시켜 9까지 순서대로 더함. * 2. 이 값들을 모두 더함. * 3. 모두 더한 값에서 11로 나눈 나머지 값을 구함. * 4. 11에서 그 나머지 값을 뺀 뒤, 그것을 10으로 나눈 나머지 값을 구함. */ int SumOfNum = (Convert.ToInt32(Convert.ToString(Value[0])) * 2) + (Convert.ToInt32(Convert.ToString(Value[1])) * 3) + (Convert.ToInt32(Convert.ToString(Value[2])) * 4) + (Convert.ToInt32(Convert.ToString(Value[3])) * 5) + (Convert.ToInt32(Convert.ToString(Value[4])) * 6) + (Convert.ToInt32(Convert.ToString(Value[5])) * 7) + (Convert.ToInt32(Convert.ToString(Value[6])) * 8) + (Convert.ToInt32(Convert.ToString(Value[7])) * 9) + (Convert.ToInt32(Convert.ToString(Value[8])) * 2) + (Convert.ToInt32(Convert.ToString(Value[9])) * 3) + (Convert.ToInt32(Convert.ToString(Value[10])) * 4) + (Convert.ToInt32(Convert.ToString(Value[11])) * 5); int CheckDigit = (11 - (SumOfNum % 11)) % 10; return(Value + CheckDigit); }