코딩하는 나귀

[iOS] 문자열 조작

iOS2011. 7. 5. 09:00

[출처 : http://autocamping.tistory.com/204]

Unicode  문자열 조작

- (id) initWithUTF8String:(const char *)bytes

 문자코드가 UTF8이고, 문자로 끝나는 형식의 C언어 문자열에서 정보를 복사한후 리시버를 초기화 합니다.


- (const char *)UTF8String

 문자 코드가 UTF-8이고, 널문자로 끝나는 형식의 C언어 문자열을 가리키는 포인터를 리턴합니다해제후에도 계속 사용할려면 복사 해두어야 한다.


- (NSUInteger) length

 문자열의 길리를 리턴


- (unichar)characterAtIndex:(NSUInteger)index

 문자열내에서 index번째에 위치하는 문자를 리턴합니다.


- (id) initWithCharacters:(const unichar *)characters length:(NSUInteger)length

characters 있는 length문자 만큼 Unicode 문자열을 복사하여 그것이 내용이 되는 리시버를 최기화 합니다.


- (void)getCharacter:(unichar *)buffer

리시버를 표현하는 Unicode문자열이 buffer 가리키는 메모리 영역에 쓰입니다. 부분적으로 문자열을 끊어 내려면 메소스 getCharacters:range: 사용한다.

 

문자코드를 지정한 상호변환
 

NSASCIIStringEncoding 7비트 ASCII인코딩

NSUTF8StringEncoding  문자의 8비트 표현( UTF8)

NSMacOSRomanStringEncoding  Mac OS 인코딩

NSKoreanEUCStringEncoding  한국어 8비트 EUC인코딩
 

- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding

지정된 문자열을 인수로 지정한 문자 코드로 변환한 C언어 문자열을 리턴합니다.

 

- (id) initWithData:(NSData *)data encoding:(NSStringEncoding) encoding

 바이트 배열로 들어 있는 데이터를 Unicode 변환하고, NSString 문자열로 초기화된 문자열을 초기화 합니다.


- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

 문자열을 encoding으로 인코딩을 하고 결과를 바이트 배열이 들어 있는 NSData 인스턴스를 리턴합니다.


- (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding) encoding

 인코딩한 경우에 필요한 바이트 수를 리턴합니다.


- (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding

 클래스 메소드 availableStringEncoding 사용하면 환경에서 이용 가능한 인코딩 방법을 있습니다.


서식에 따른 문자열 작성
 

- (id) initWithFormat:(NSString *)format,...

 format으로 지정된 서식에 맞게 문자열을 생성하고, 그것을 내용으로 하도록 리시버를 초기화 합니다. "," 구분해서 추가합니다. 서식 문자열은 nil이면 안됩니다.


문자열 비교
 

- (NSComparisonResult)compare:(NSString *)aString

 리시버와 인수의 문자열을 비교해서 결과를 리턴합니다.


- (NSComparisonResult)caseInsensitiveCompare:(NSString *) aString

 영문자의 대소문자 구분을 하지 않고 문자열을 비교합니다.


-  (BOOL)isEqualToString:NSString *)aString

  리시버와 인수의 문자열이 같은지 확인합니다.


- (BOOL)hasPrefix:(NSString *)aString

 인수의 문자열이 리시버 앞부분과 일치하는지 확인합니다.


결합
 

- (NSString *)strngByAppendingString:(NSString *)aString

 리시버의 부분에 인수의 문자열을 연결해서 임시 문자열을 만듭니다.

- (NSString *)stringByAppendingFormat:(NSString *)format, ...

 인수의 서식 문자열과 그후에 계속되는 인수를 사용해서 작성된 문자열을 리시버에 연결해서 임시 문자열을 만듭니다.


부분 문자열

- (NSString *)substringToIndex:(NSUInteger)anIndex

 리시버의 부분부터 anIndex 표시하는 위치의 문자까지에 해당되는 새로운 문자열을 만듭니다.


- (NSString *)substringFromIndex:(NSInteger)anIndex

 리시버의 anIndex 가리키는 위치에서 문자까지에 해당하는 새로운 문자열을 만듭니다.


- (NSString *)substringWithRange:(NSRange)aRange

 리시버의 aRange 지정되는 범위에 해당하는 문자에서 새로운 문자열을 만듭니다.


검색과 치환
 

- (NSRange)rangeOfString:(NSString *)aString

 리시버 내에서 인수로 지정한 문자열이 있으면 그위치의 길이를 구조체 NRange 형식으로 리턴합니다. 없는 경우 NSNotFound 리턴하게 된다.


- (NSRange)lineRangeForRange:(RRange)aRange

 개행문자로 구분된 범위내에서 인수로 지정한 문자의 범위를 리턴한다.


- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement

 리시버의 aRange 표시되는 범위를 다른 문자열로 치환한 새로운 문자열을 만듭니다.


- (NSString *)stringByReplacingOccurrenceOfString:(NSString *) target withString:(NSString *)replacement

 리시버에 포함된 모든 targetreplacement 치환한 새로운 문자열을 만듭니다.


lowercaseString : 모든 영문자를 소문자로 변환

uppercaseString : 모든 영문자를 대문자로 변환

capitalizedString : 단어 앞글자를 대문자로 남은 글자는 소문자로 변환


문자열 검색 예제
 

- (BOOL) matchName:(NSString *) name withRecord: (NSDictionary *)record

{

BOOL rc = NO;

NSString *firstName = nil;

NSString *lastName = nil;
NSRange range = [name rangeOfString:@" "];
if (range.location != NSNotFound) {

firstName = [name substring ToIndex:range.location];
lastName = [name.substringFromIndex:range.location + 1]; 

}

}


Transfer lowercase, uppercase
 

NSString *name = [string lowercaseString], [string uppercaseString];


Append string
 

NSString *parentPath;

NSString *fullPath = [parentPath stringByAppendingFormat: @"/%@", filename];