투케이2K

198. (Objective-C/objc) [유틸 파일] getMacFormat - 맥 주소 (Mac Address) 형식에 맞게 세미콜론 자릿수 포맷 함수 본문

Objective-C

198. (Objective-C/objc) [유틸 파일] getMacFormat - 맥 주소 (Mac Address) 형식에 맞게 세미콜론 자릿수 포맷 함수

투케이2K 2026. 5. 26. 20:14
728x90
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Objective-c


- 개발 툴 : Xcode


- 기술 구분 : 유틸 파일 / getCallNumFormat / Regular Expression


- 사전) 👉 정규식 (Regular Expression, 흔히 Regex) 간단 설명 : 

  >> 정규식은 문자열에서 특정 패턴을 찾거나, 검사하거나, 치환하기 위한 규칙(문법)입니다.

  >> ^(\d{2}|\d{3})-(\d{3}|\d{4})-\d{4}$ 패턴 해석 예시 : 

    ^ : 시작
    (\d{2}|\d{3}) : 2자리 또는 3자리 숫자 (지역번호)    
    (\d{3}|\d{4}) : 3~4자리
    \d{4} : 4자리
    $ : 끝

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// ------------------------------------------------------------
// 🟦 [함수] : getMacFormat 코드 첨부
// ------------------------------------------------------------
- (NSString *)getMacFormat:(NSString *)macNum {
    
    // [리턴 변수 선언]
    NSString *returnData = @"";
    
    // Null 체크
    if ([[C_Util new] stringNotNull:macNum] == NO) {
        
        [S_Log eWithTag:@"KWON_TWOK" msg:@"[getCallNumFormat] : Error : input data is null"];
        
        return returnData;
    }
    
    // ------------------------------------------------------------
    // 특수문자 제거
    // ------------------------------------------------------------
    NSString *replaceMacNum = [macNum copy];
    
    NSError *error = nil;
    
    NSRegularExpression *regex =
    [NSRegularExpression regularExpressionWithPattern:@"[!@#$%^&*().,?:;/_{}+=-]"
                                              options:0
                                                error:&error];
    
    replaceMacNum = [regex stringByReplacingMatchesInString:replaceMacNum
                                                    options:0
                                                      range:NSMakeRange(0, replaceMacNum.length)
                                               withTemplate:@""];
    
    // ------------------------------------------------------------
    // 공백 제거
    // ------------------------------------------------------------
    replaceMacNum = [replaceMacNum stringByReplacingOccurrencesOfString:@" "
                                                             withString:@""];
    
    // ------------------------------------------------------------
    // 길이 체크 (짝수 여부)
    // ------------------------------------------------------------
    if ([[C_Util new] stringNotNull:replaceMacNum] &&
        (replaceMacNum.length % 2 == 0)) {
        
        NSMutableString *result = [NSMutableString string];
        
        for (NSInteger i = 0; i < replaceMacNum.length; i++) {
            
            // 2자리마다 ":" 추가
            if (i != 0 && i % 2 == 0) {
                [result appendString:@":"];
            }
            
            NSString *character =
            [replaceMacNum substringWithRange:NSMakeRange(i, 1)];
            
            [result appendString:character];
        }
        
        returnData = result;
    }
    else {
        
        [S_Log eWithTag:@"KWON_TWOK"
                    msg:@"[getCallNumFormat] : Error : length mismatch"];
    }
    
    [S_Log wWithTag:@"KWON_TWOK"
                msg:[NSString stringWithFormat:
                     @"[getMacFormat] Length = %lu / %@",
                     (unsigned long)returnData.length,
                     returnData]];
    
    return returnData;
}




// ------------------------------------------------------------
// 🟦 [호출] : getMacFormat 호출 코드
// ------------------------------------------------------------

NSString *result = [self getMacFormat:@"A1B2C3D4E5F6"];
NSLog(@"%@", result);





// ------------------------------------------------------------
// 🟦 [결과 출력 예시]
// ------------------------------------------------------------

A1:B2:C3:D4:E5:F6

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

▶️ [유틸 파일] stringRegexpContains : String 문자열에 특정 정규식 패턴 포함 확인

https://kkh0977.tistory.com/5928

https://blog.naver.com/kkh0977/223414915474?trackingCode=blog_bloghome_searchlist


▶️ [정규식 사용해 특수 문자 및 공백 제거 실시 - NSRegularExpression]

https://kkh0977.tistory.com/1366

https://blog.naver.com/kkh0977/222555692392?trackingCode=blog_bloghome_searchlist


▶️ [regularExpression 정규식 사용해 이메일 형식 (email) 검증 실시]

https://kkh0977.tistory.com/2791

https://blog.naver.com/kkh0977/222898069653?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments