Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        /// <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);
        }