티스토리 뷰

[Xcode에서 Obj-C] Foundation - 문자열 클래스

클래스 

 

NSString 

문자열을 변경할 수 없다. 

NSMutableString 

문자열을 변경할 수 있다. 


NSMutableString은 NSString 을 상속받는다.


NSMutableString 의 객체 생성

NSMutableString *str;
str = [[NSMutableString alloc] initWithCapacity:10]
str = [NSMUtableString stringWithCapacity:10]


메서드 

initWithCapacity: 

형식 

- (id) initWithCapacity: (NSUInteger) capacity 

설명 

문자의 수를 지정하여 초기화한다. 


NSMutableString 의 객체에 문자열 추가

NSMutableString *str;
str = [[NSMutableString alloc] initWithCapacity:10];

[str appendString:@"ABC"];
[str appendFormat:@"DEF"]; 

NSLog(@"%@", str); // ABC DEF

str = [NSMutableString stringWithFormat:@"%d count", 10]; // NSString 클래스의 팩토리 메서드로 생성
[str appendFormat:@"%@ count", 10]; // 10 count 라는 문자열을 추가한다.


메서드 

appendString: 

형식 

- (void) appendString: (NSString *) aString 

설명 

문자열을 추가한다.


NSString 클래스의 메서드로 NSMutableString 객체 생성

NSMutableString *str;
str = [NSMutableString stringWithFormat:@"%d count", 10]; // NSString 클래스의 팩토리 메서드로 생성

[str appendFormat:@"%@ count", 10]; // 10 count 라는 문자열을 추가한다.


NSString의 객체에 문자열 추가

새로운 인스턴스를 만들어 반환하는 것이 다르다.

NSString *str1 = @"ABC";
NSString *str2 = [str1 stringByAppendingString:@"DEF"];


메서드 

stringByAppendingString: 

형식 

- (id) stringByAppendingString: (NSString *) aString

설명 

인수의 문자열을 더한 NSString 객체를 생성하고 반환한다. 


문자열클래스의 메서드

문자열 비교

NSString *str1 = "@abc";
NSString *str2 = "@def";

if([str1 isEqualToString:str2]){
// 같다
} else {
// 다르다
}


메서드 

isEqualToString: 

형식 

- (bool) isEqualToString: (NSString *) aString

설명 

문자열을 비교하여 같으면 true, 다르면 false를 반환한다.


문자열 추출

NSString *str = "@abcdefghijklmnopqrstuvwxyz";
NSRange range = NSMaskRange(1, 3);
NSString *rangeStr = [str subStringWithRange:range];
// 아래의 구문은 위의 구문과 같다.
NSString *rangeStr = [str subStringWithRange:NSMaskRange(1, 3)];

NSLog(@"%@", rangeStr); // bcd ~ 인덱스 1번 부터 3개의 문자를 추출한다.


메서드 

subStringWithRange: 

형식 

- (NSString *) subStringWithRange: (NSRange) aRange

설명 

NSRange로 지정한 범위만큼 문자열을 추출한다.


문자열 길이

NSString *str = "@abcdefghijklmnopqrstuvwxyz";
int leng = [str length];


메서드 

length: 

형식 

- (NSUInteger) length

설명 

문자열의 길이를 반환한다.


문자열 리터럴에 직접 메서드 실행

NSString *str = [@"Animal" uppercaseString]; // ANIMAL


텍스트 파일 읽기

메서드 

stringWithContentsOfFile:encoding:error: 

형식 

+ (id) stringWithContentsOfFile: (NSString *) path

   encoding: (NSStringEncoding) enc error: (NSError **) error

설명 

path에서 지정된 파일로부터 NSString 객체를 생성한다.


텍스트 파일 경로

메서드 

stringByExpandingTildeInPath 

형식 

stringByExpandingTildeInPath

설명 

'~'로 시작되는 경로를 절대경로로 변환한다.


홈디렉토리부터 path를 지정한다.


UNIX계열 OS에서는 '~'가 홈디렉토리를 나타낸다.


path = [[@"~" stringByExpandingTildInPath] stringByAppendingString:@"/sample.txt"];


text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];


정상적으로 실행되면 문자열을 읽어 들이고

에러가 발생됐을 경우 반환값은 nil 이 된다.


if(text == nil) {

NSLog(@"Error:%@", [error localizedDescription]);

} else {

NSLog(@"\n%@", text);

}




개인적으로 공부하며 기억하기 위해 작성한 포스팅입니다.

이득을 위하여 작성된 포스팅이 아님을 알려드립니다.


댓글