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 |