Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
iOS Developer/Objective-C

12. Objective-C Strings 문자열

by Toughie 2024. 5. 13.

KAKAO-Choonsik

 

Objective-C에서 문자열은 NSString 클래스를 사용한다.

NSString은 immutable 문자열을 나타낸다. 따라서 객체를 생성한 후에는 내용을 변경할 수 없다.

따라서 아예 새로운 객체를 반환하는 메서드가 많다.

 

이에 자식 클래스인 NSMutableString을 사용하면 필요에 따라 더 유연하게 문자열을 변경할 수 있다.

 

문자열 관련 메서드는 굉장히 다양하기 때문에 코드와 함께 정리해 보았다.

대부분 메서드명을 보면 어떤 기능인지 알 수 있다.

#import <Foundation/Foundation.h>

int main(void) {
    @autoreleasepool {
        //기본 생성 및 출력
        NSString *greeting = @"hello apple";
        NSLog(@"Greetings!: %@\n", greeting);
        
        //문자열 초기화
        NSString *str1 = @"I'm";
        NSString *str2 = @"toughie";
        NSString *str3 = @"3.14";
        NSString *str4 = @"7";
        NSString *forTrim = @"   qwer  ";
        
        //capitalize
        NSString *capt = [str2 capitalizedString]; //Toughie
        //lowercase
        NSString *lower = [str1 lowercaseString]; //i'm
        //find character at index
        UniChar ch = [str1 characterAtIndex:0]; //73(10진법)
        
        // convert to numbers
        double dv = [str3 doubleValue]; //3.1400
        float fv = [str3 floatValue]; //3.1400
        NSInteger integ = [str4 integerValue];
        NSLog(@"%ld",(long)integ);
        
        //true or false
        Boolean prefix = [str2 hasPrefix:@"s"]; //1 아니면 0
        Boolean suffix = [str2 hasSuffix:@"e"];
        Boolean same = [str2 isEqualToString:@"toughie"];
        
        NSUInteger len = [str2 length];
        NSRange range = [str2 rangeOfString:@"gh"]; //3
        NSLog(@"start at: %lu, length: %lu",range.location, (unsigned long)range.length); //struct 반환 없으면 location프로퍼티가 NSNotFound 상수
        
        //new instance
        NSString *format = [[NSString alloc] initWithFormat:@"value x: %d, y: %d",99,100];
        NSString *appended = [str2 stringByAppendingFormat:@" coffee"]; //toughie coffee
        NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
        NSString *trimmed = [forTrim stringByTrimmingCharactersInSet:set]; //qwer
        NSString *subString = [greeting substringFromIndex:6]; //apple
        
        // mutable 객체 생성
        NSMutableString *ms = [NSMutableString stringWithString:@"mutable"];
        // 문자열 추가
        [ms appendString:@" string!"];
        // 문자열 삽입
        [ms insertString:@"flexible " atIndex:8];
        // 문자열 삭제
        [ms deleteCharactersInRange:NSMakeRange(0, 8)]; //이상 미만
        // 문자열 대체
        [ms replaceCharactersInRange:NSMakeRange(0,8) withString:@"FLEXIBLE"];
        // 출력
        NSLog(@"%@",ms);
        
    }
    return 0;
}

 

초기화 시 포인터를 사용하긴 하지만, 다른 곳에서 호출할 때는 그냥 변수처럼 사용할 수 있는 것은 꽤 편리하게 느껴진다.

'iOS Developer > Objective-C' 카테고리의 다른 글

14. Objective-C Preprocessor 전처리기  (0) 2024.05.16
13. Objective-C Structure 구조체  (0) 2024.05.16
11. Objective-C Pointers 포인터  (0) 2024.05.09
10. Objective-C Arrays 배열  (0) 2024.05.07
9. Objective-C NSNumbers  (0) 2024.05.07