투케이2K

209. (swift5/xcode) [유틸 파일] stringRegexpContains : String 문자열에 특정 정규식 패턴 포함 확인 본문

Swift

209. (swift5/xcode) [유틸 파일] stringRegexpContains : String 문자열에 특정 정규식 패턴 포함 확인

투케이2K 2024. 4. 14. 10:06

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [String 문자열에 특정 정규식 패턴 포함 확인]
    // -----------------------------------------------------------------------------------------
    func stringRegexpContains(pattern: String, data: String) -> Bool {
        
        /*
        // -----------------------------------------
        [stringRegexpContains 메소드 설명]
        // -----------------------------------------
        1. String 문자열에 특정 정규식 패턴 포함 확인
        // -----------------------------------------
        2. 호출 방법 :
         
         C_Util().stringRegexpContains(pattern: "[ㄱ-ㅎㅏ-ㅣ가-힣]", data: "안녕@!투케이")
         C_Util().stringRegexpContains(pattern: "[ㄱ-ㅎㅏ-ㅣ가-힣]", data: "hello12Twok")
         C_Util().stringRegexpContains(pattern: "[a-z]", data: "안녕@!투케이")
         C_Util().stringRegexpContains(pattern: "[a-z]", data: "hello12Twok")
        // -----------------------------------------
        3. 리턴 반환 :

        true / false
        // -----------------------------------------
        */

        
        // [리턴 변수 선언]
        var returnData = false
        var M_LOG = ""


        // [로직 처리 실시]
        if C_Util().stringNotNull(str: pattern) == true && C_Util().stringNotNull(str: data) == true {

            // [공백 제거]
            var nullRemoveString = data.trim()
            nullRemoveString = nullRemoveString.replaceAll(_string: " ", _replace: "")

            let strArr = Array(nullRemoveString) // [문자열 한글자씩 확인을 위해 배열에 담는다]

            // [특수 문자 제거 수행]
            var specialRemoveString = ""
            if let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive) {
                var index = 0
                while index < strArr.count { // [string 문자 하나 마다 개별 정규식 체크]
                    let checkString = regex.matches(in: String(strArr[index]), options: [], range: NSRange(location: 0, length: 1))
                    if checkString.count == 0 {
                        index += 1 // [정규식 패턴 외의 문자가 포함된 경우]
                    }
                    else { // 정규식 포함 패턴의 문자
                        specialRemoveString += String(strArr[index]) // [리턴 문자열에 추가]
                        index += 1
                    }
                }
            }
            
            if specialRemoveString.count > 0 { // [정규식 패턴 문자 포함 된 경우]
                M_LOG = "[Check] : String Special Contains"
                returnData = true
            }
            else {
                M_LOG = "[Check] : String Special Not Contains"
            }
            
        }
        else {
            M_LOG = "[Error] : Input Data Is Null"
        }

        
        // [로그 출력 실시]
        //*
        S_Log._D_(description: "String 문자열에 특정 정규식 패턴 포함 확인", data: [
            "INPUT [PATTERN] :: \(pattern)",
            "INPUT [DATA] :: \(data)",
            "M_LOG :: \(M_LOG)",
            "RETURN :: \(returnData)"
        ])
        // */
        
        
        // [리턴 데이터 반환 실시]
        return returnData
    }
 

[결과 출력]

 

반응형
Comments