투케이2K

24. (swift/xcode) 정규식 사용해 특수 문자 및 공백 제거 실시 - NSRegularExpression 본문

Swift

24. (swift/xcode) 정규식 사용해 특수 문자 및 공백 제거 실시 - NSRegularExpression

투케이2K 2021. 11. 1. 22:54
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[소스 코드 : ExtensionUtil]

import Foundation

extension String {
    // [정규식 수행 실시 : 사용 방법 : let changeData = strData.matchString(_string: strData)]
    func matchString (_string : String) -> String { // 문자열 변경 실시
        let strArr = Array(_string) // 문자열 한글자씩 확인을 위해 배열에 담는다
        
        let pattern = "^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]$" // 정규식 : 한글, 영어, 숫자만 허용 (공백, 특수문자 제거)
        //let pattern = "^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9\\s]$" // 정규식 : 한글, 영어, 숫자, 공백만 허용 (특수문자 제거)
        
        // 문자열 길이가 한개 이상인 경우만 패턴 검사 수행
        var resultString = ""
        if strArr.count > 0 {
            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 { // 정규식 포함 패턴의 문자
                        resultString += String(strArr[index]) // 리턴 문자열에 추가
                        index += 1
                    }
                }
            }
            return resultString
        }
        else {
            return _string // 원본 문자 다시 리턴
        }
    }
}

[소스 코드 : 뷰 컨트롤러]

    // MARK: [테스트 메인 메소드]
    func testMain() {
        
        /*
        [요약 설명]
        1. 정규식 패턴 ^[a-z] : 영어 소문자 허용
        2. 정규식 패턴 ^[A-Z] : 영어 대문자 허용
        3. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣] : 한글 허용
        4. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣] : 숫자 허용
        5. 정규식 패턴 ^[ ] or ^[\\s] : 공백 허용
        */
        
        
        // 초기 문자열 선언 실시
        let strData = "hello%^@ 투케이2k ㅎㅎ!#$&TW*(O)K=+"
        
        
        // 정규식 수행 실시
        let changeData = strData.matchString(_string: strData)
        
        
        // 결과 출력 실시
        print("")
        print("===============================")
        print("[A_Main >> testMain() :: 메인 수행 실시]")
        print("[원본 :: \(strData)]")
        print("[정규식 수행 :: \(changeData)]")
        print("===============================")
        print("")
    }

[결과 출력]


 

반응형
Comments