투케이2K

29. (Objective-C/objc) 정규식 NSRegularExpressionSearch 사용해 공백 및 특수 문자 제거 실시 본문

Objective-C

29. (Objective-C/objc) 정규식 NSRegularExpressionSearch 사용해 공백 및 특수 문자 제거 실시

투케이2K 2022. 3. 7. 08:12

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[testMain 함수]

// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    printf("\n");
    printf("=============================== \n");
    printf("[ViewController >> testMain() :: 테스트 메소드 수행] \n");
    printf("=============================== \n");
    printf("\n");
    
    
    // [초기 변수 선언 실시]
    NSString *strData = @"hello%^@ 투케이2k ㅎㅎ!#$&TW*(O)K=+";
    
    
    
    // [정규식 패턴 정의 실시]
    NSString *pattern_1 = @"^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]$"; // 정규식 : 한글, 영어, 숫자만 허용 (공백, 특수문자 제거)
    NSString *pattern_2 = @"^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9\\s]$"; // 정규식 : 한글, 영어, 숫자, 공백만 허용 (특수문자 제거)

    
    
    // [공백 + 특수 문자 제거 정규식 작성]
    NSString *removeData_1 = @"";
    @try {
        // [for 문을 수행하면서 한글자씩 정규식 확인 실시]
        for (int i=0; i<strData.length; i++){
                
            // [substring 사용해 문자열 한글자씩 출력]
            NSString *charAt = [strData substringWithRange:NSMakeRange(i, 1)];
            
            
            // [데이터가 정규식 패턴을 만족하는지 체크]
            NSRange checkPattern = [charAt rangeOfString:pattern_1 options:NSRegularExpressionSearch];
            
            
            // [정규식 패턴을 만족하는 경우만 문자열 추가]
            if (checkPattern.location != NSNotFound){
                removeData_1 = [removeData_1 stringByAppendingString:charAt];
            }
        }
        // [결과 출력]
        printf("\n");
        printf("=============================== \n");
        printf("[원 본 : %s] \n", strData.description.UTF8String);
        printf("[정규식 [공백 및 특수문자 제거] : %s] \n", removeData_1.description.UTF8String);
        printf("=============================== \n");
        printf("\n");
        
    } @catch (NSException *exception) {
        printf("\n");
        printf("=============================== \n");
        printf("[catch [name] :: %s] \n", exception.name.description.UTF8String);
        printf("[catch [reason] :: %s] \n", exception.reason.description.UTF8String);
        printf("=============================== \n");
        printf("\n");
    }
    
    
    
    // [특수 문자 제거 정규식 작성]
    NSString *removeData_2 = @"";
    @try {
        // [for 문을 수행하면서 한글자씩 정규식 확인 실시]
        for (int i=0; i<strData.length; i++){
                
            // [substring 사용해 문자열 한글자씩 출력]
            NSString *charAt = [strData substringWithRange:NSMakeRange(i, 1)];
            
            
            // [데이터가 정규식 패턴을 만족하는지 체크]
            NSRange checkPattern = [charAt rangeOfString:pattern_2 options:NSRegularExpressionSearch];
            
            
            // [정규식 패턴을 만족하는 경우만 문자열 추가]
            if (checkPattern.location != NSNotFound){
                removeData_2 = [removeData_2 stringByAppendingString:charAt];
            }
        }
        // [결과 출력]
        printf("\n");
        printf("=============================== \n");
        printf("[원 본 : %s] \n", strData.description.UTF8String);
        printf("[정규식 [특수문자 제거] : %s] \n", removeData_2.description.UTF8String);
        printf("=============================== \n");
        printf("\n");
        
    } @catch (NSException *exception) {
        printf("\n");
        printf("=============================== \n");
        printf("[catch [name] :: %s] \n", exception.name.description.UTF8String);
        printf("[catch [reason] :: %s] \n", exception.reason.description.UTF8String);
        printf("=============================== \n");
        printf("\n");
    }

}
 

[결과 출력]


 

반응형
Comments