투케이2K

318. (kotlin/코틀린) [유틸 파일] : [유틸 파일] : getRegExpString : 정규식 수행 및 새로운 문자열 반환 본문

Kotlin

318. (kotlin/코틀린) [유틸 파일] : [유틸 파일] : getRegExpString : 정규식 수행 및 새로운 문자열 반환

투케이2K 2023. 6. 24. 11:25

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getRegExpString : 정규식 수행 및 새로운 문자열 반환
        // -----------------------------------------------------------------------------------------
        fun getRegExpString(data: String, regType: Int): String {

            /**
             * // -----------------------------------------
             * [getRegExpString 메소드 설명]
             * // -----------------------------------------
             * 1. 정규식 수행 및 새로운 문자열 반환
             * // -----------------------------------------
             * 2. 호출 방법 :
             *
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 1) // [영어 소문자만 허용]
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 2) // [영어 대문자만 허용]
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 3) // [한글만 허용]
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 4) // [숫자만 허용]
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 5) // [공백, 특수문자 모두 제거]
             * C_Util.getRegExpString("hello@@TWOK   123안녕", 6) // [특수문자 모두 제거]
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 : 정규식 수행 된 문자열 반환
             * // -----------------------------------------
             */
            
            /**
             * // -----------------------------------------
             * [요약 설명]
             * // -----------------------------------------
             * 1. 정규식 패턴 ^[a-z] : 영어 소문자만 허용
             * // -----------------------------------------
             * 2. 정규식 패턴 ^[A-Z] : 영어 대문자만 허용
             * // -----------------------------------------
             * 3. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣] : 한글만 허용
             * // -----------------------------------------
             * 4. 정규식 패턴 ^[0-9] : 숫자만 허용
             * // -----------------------------------------
             * 5. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9] : 특수문자 및 공백 전체 제거
             * // -----------------------------------------
             * 6. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9\\s] : 특수문자 전체 제거
             * // -----------------------------------------
             */


            // [결과를 반환할 변수 선언 실시]
            var returnData = ""
            var M_LOG = ""


            // [정규식 패턴 형식 정의]
            val pattern_1 = "^[a-z]" // 정규식 : 영어 소문자만 허용
            val pattern_2 = "^[A-Z]" // 정규식 : 영어 대문자만 허용
            val pattern_3 = "^[ㄱ-ㅎㅏ-ㅣ가-힣]" // 정규식 : 한글만 허용
            val pattern_4 = "^[0-9]" // 정규식 : 숫자만 허용
            val pattern_5 = "^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]" // 정규식 : 한글, 영어, 숫자만 허용 (공백, 특수문자 제거)
            val pattern_6 = "^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9\\s]" // 정규식 : 한글, 영어, 숫자, 공백만 허용 (특수문자 제거)


            // [인풋 값 기준으로 패턴 삽입]
            var pattern : Regex? = null
            if (regType == 1) {
                pattern = Regex(pattern_1)
                M_LOG = "영어 소문자만 허용"
            }
            if (regType == 2) {
                pattern = Regex(pattern_2)
                M_LOG = "영어 대문자만 허용"
            }
            if (regType == 3) {
                pattern = Regex(pattern_3)
                M_LOG = "한글만 허용"
            }
            if (regType == 4) {
                pattern = Regex(pattern_4)
                M_LOG = "숫자만 허용"
            }
            if (regType == 5) {
                pattern = Regex(pattern_5)
                M_LOG = "공백, 특수문자 모두 제거"
            }
            if (regType == 6) {
                pattern = Regex(pattern_6)
                M_LOG = "특수문자 모두 제거"
            }


            // [로직 처리 실시]
            try {
                if (stringNotNull(data) == true && stringNotNull(pattern.toString()) == true) { // [문자열이 널이 아닌 경우 수행]

                    // for 반복문을 선언해서 문자 한글자씩 확인 실시
                    for (i in 0 until data.length) {

                        returnData += if (data[i].toString().matches(pattern!!)) { // 정규식 패턴을 만족하는 경우
                            data[i] // 문자열 추가
                        }
                        else { // 정규식 패턴이 아닌 경우
                            continue
                        }

                    }
                }

            } catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("정규식 수행 및 문자열 반환 실시", arrayOf(
                "INPUT :: $data",
                "M_LOG :: $M_LOG",
                "REGEXP :: $pattern",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


            // [결과 반환 실시]
            return returnData
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_Util.getRegExpString(C_Util.java:5353)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 정규식 수행 및 문자열 반환 실시]
I/: ----------------------------------------------------
I/: [LOG :: INPUT :: hello@@TWOK   123안녕]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: 영어 소문자만 허용]
I/: ----------------------------------------------------
I/: [LOG :: REGEXP :: ^[a-z]]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: hello]
D///===========//: ================================================

 

반응형
Comments