<목차>

 

hasPrefix : 앞부분 문자열이 같은지 확인

hasSuffix : 뒷부분 문자열이 같은지 확인

 

 

 

 

 

1. 사전 프로젝트 코드 세팅하고 오기

 

https://growingsaja.tistory.com/869

 

[Objective-C] 프로젝트 기본 세팅 소스코드 예시

1. AppDelegate 수정 with 설명 // vim AppDelegate.h #import // MARK: - [클래스 설명] /* // ----------------------------------------- 1. 애플리케이션 딜리게이트 (선언부) 2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생

growingsaja.tistory.com

 

 

 

 

 

2. 문자열 맨 앞, 맨 뒤에 일치하는지 확인하는 소스 코드

 

// vim ViewController.m

// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"

// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController



// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/



// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
    // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
    [super viewDidLoad];
    NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
}



// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"[ViewController >> viewWillAppear() :: 뷰 로드 완료]");
}



// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"[ViewController >> viewDidAppear() :: 뷰 화면 표시]");
    
    // [테스트 메인 함수 호출]
    [self testMain];
}


// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"[ViewController >> viewWillDisappear() :: 뷰 정지 상태]");
}


// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"[ViewController >> viewDidDisappear() :: 뷰 종료 상태]");
}


// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");

    /*
    // MARK: [요약 설명]
    1. hasPrefix : 특정 문자열로 시작하는지 확인할 수 있습니다
    2. hasSuffix : 특정 문자열로 종료되는지 확인할 수 있습니다
    */
    
    
    // [초기 문자열 데이터 선언 실시]
    NSString *strData = @"https://test.com";
    
    
    // [특정 문자열로 시작 및 종료하는지 확인]
    bool isStartHttp =  [strData hasPrefix:@"http"];
    bool isStartNull =  [strData hasPrefix:@"Null"];
    
    bool isEndCom =  [strData hasSuffix:@"com"];
    bool isEndNull =  [strData hasSuffix:@"Null"];
    
    
    // [결과 출력 실시]
    NSLog(@"[strData [원본] : %s]", strData.description.UTF8String);
    NSLog(@"[startHttp [http 시작] : %d]", isStartHttp);
    NSLog(@"[startNull [Null 시작] : %d]", isStartNull);
    NSLog(@"[endCom [com 종료] : %d]", isEndCom);
    NSLog(@"[endNull [Null 종료] : %d]", isEndNull);
}
    
// -----------------------------------------
@end
// -----------------------------------------

 

 

 

 

 

3. 문자열 맨 앞, 맨 뒤에 일치하는지 확인 결과

 

 

 

 

 

 

4. String을 구성하는 각 char를 표준식 조건에 해당되는지 모두 확인해보는 소스코드 예제

 

// vim ViewController.m

// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"

// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController



// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/



// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
    // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
    [super viewDidLoad];
    NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
    // MARK: [프로토콜 메소드 호출 실시]
}



// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"[ViewController >> viewWillAppear() :: 뷰 로드 완료]");
}



// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"[ViewController >> viewDidAppear() :: 뷰 화면 표시]");
    
    // [테스트 메인 함수 호출]
    [self testMain];
}


// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"[ViewController >> viewWillDisappear() :: 뷰 정지 상태]");
}


// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"[ViewController >> viewDidDisappear() :: 뷰 종료 상태]");
}


// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
    
    // [초기 변수 선언 실시]
    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];
            }
        }
        // [결과 출력]
        NSLog(@"[원 본 : %@]", strData);
        NSLog(@"[정규식 [공백 및 특수문자 제거] : %@]", removeData_1);
        
    } @catch (NSException *exception) {
        NSLog(@"[catch [name] :: %@]", exception.name);
        NSLog(@"[catch [reason] :: %@]", exception.reason);
    }
    
    
    
    // [특수 문자 제거 정규식 작성]
    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];
            }
        }
        // [결과 출력]
        NSLog(@"[원 본 : %@]", strData);
        NSLog(@"[정규식 [특수문자 제거] : %@]", removeData_2);
        
    } @catch (NSException *exception) {
        NSLog(@"[catch [name] :: %@]", exception.name);
        NSLog(@"[catch [reason] :: %@]", exception.reason);
    }

}

// -----------------------------------------
@end
// -----------------------------------------

 

 

 

 

 

5. String을 구성하는 각 char를 표준식 조건에 해당되는지 모두 확인해보는 실습 결과

 

 

 

 

 

 

6. String append, copy, lenght 확인 실습 소스코드

 

// vim ViewController.m

// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"

// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController



// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/



// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
    // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
    [super viewDidLoad];
    NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
    // MARK: [프로토콜 메소드 호출 실시]
}



// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"[ViewController >> viewWillAppear() :: 뷰 로드 완료]");
}



// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"[ViewController >> viewDidAppear() :: 뷰 화면 표시]");
    
    // [테스트 메인 함수 호출]
    [self testMain];
}


// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"[ViewController >> viewWillDisappear() :: 뷰 정지 상태]");
}


// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"[ViewController >> viewDidDisappear() :: 뷰 종료 상태]");
}


// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
    
    // [초기 변수 선언 실시]
    NSString *oneData = @"Hello";
    NSString *twoData = @"사자";
    
    
    // [[1] : stringByAppendingString 문자열 결합]
    NSString *totalData_1 = [oneData stringByAppendingString:twoData];
    NSLog(@"[문자열 결합 [stringByAppendingString] :: %@]", totalData_1);
    
    
    // [[2] : stringWithString 문자열 복사]
    NSString *totalData_2 = [NSString stringWithString:totalData_1];
    NSLog(@"[문자열 복사 [stringWithString] :: %@]", totalData_2);
    
    
    // [[3] : length 문자열 길이 확인]
    NSInteger strLength = [totalData_2 length]; // totalData_2.length 방식도 [가능]
    NSLog(@"[문자열 길이 [strLength] :: %li]", (long)strLength);

}

// -----------------------------------------
@end
// -----------------------------------------

 

 

 

 

 

7. String append, copy, lenght 확인 실습 실행 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts