NSString에서 알아두어야할 몇가지 메소드들을 정리해본다.
문자열 생성
포맷에 맞게 문자열을 생성하기
+stringWithFormat:
메소드를 사용한다.
NSString *newStr = [NSString stringWithFormat:@"%@ : %d", someObj.name, someObj.score];
-initWithFormat:
의 경우 같은 동작을 하지만, 이 때는 수동으로 alloc
하므로 릴리즈의 책임을 져야 한다.
C문자열로부터 생성
initWithUTF8String:
, stringWithUTF8String:
을 통해서 const char*
데이터를 NSString 객체로 바꿀 수 있다. 1
다른 인코딩을 된 문자열이라면 initWithCString:encoding:
, stringWithCString:encoding:
을 사용할 수 있다.
바이너리 데이터로부터 생성
NSData(파일을 읽어들였거나, 네트워크 스트림으로부터 받은)객체로도 이를 만들 수 있다. initWithData:encoding:
을 쓴다. 특히 파일의 경우, stringWithContentsOfFile:encoding:error:
및 stringWithContentsOfURL:encoding:error:
를 쓸 수 있다.
파일에 쓰기
-writeToFile:atomically:encoding:error:
이 가장 기본적인 파일 쓰기 함수이다. URL 베이스의 -writeToURL:atomically:encoding:error:
도 있다. 미리 파일을 열고 닫을 필요가 없다.
속성
길이구하기
-length
프로퍼티를 이용한다. 이는 유니코드 문자의 개수를 돌려주는데, 만약 특정 인코딩으로 변환한 후의 데이터 크기를 알고 싶다면 -lengthOfBytesUsingEncoding:
을 쓴다.
서브스크립트
특정 위치의 글자는 characterAtIndex:
로 구한다. (반환형은 unichar
로 유니코드 문자 한 개의 값이다.) 서브 스트링을 구할 때는 getCharacters:range:
를 쓴다. 이는 NSString을 돌려주는게 아니라 unichar*
타입의 포인터를 받아서 range만큼 뽑아 복사해준다.
NSString 객체로 된 서브스트링을 얻으려면 substringWithRange:
나 substringFromIndex:
, substringToIndex:
를 쓴다.
C 문자열 얻기
UTF8String
속성을 사용한다. 별도 인코딩을 쓰려면 cStringUsingEncoding:
을 쓴다.
문자열 결합하기
문자열의 배열을 하나로 join 하는 것은 NSArray의 componensJoinedByString:
을 사용하면 된다. 그외 다른 문자열을 결합하기위해서는 stringByAppendingString:
이나 stringByAppendingFormat:
을 쓴다. (한번 생성된 문자열은 내부 데이터를 변경할 수 없으므로 새로운 문자열을 만들어야 한다.)
문자열 나누기
문자열을 특정 토큰으로 나누어 배열로 만드려면 componentsSeparatedByString:
이나 componentsSeparatedByCharactersInSet:
을 이용한다.
문자열 내에서 특정 문자/문자열 찾기
가장 많이 쓰이는 것은 rangeOfString:
이다.
문자열 바꾸기
서브스트링 치환은 stringByReplacingOccurrencesOfString:withString:
이다. 추가로 범위나 옵션 제한을 두는 stringByReplacingOccurrencesOfString:options:range:
도 있다. 그냥 특정 범위를 다른 문자열로 바꾸는 stringByReplacingCharactersInRange:withStirng:
도 있다.
프로퍼티리스트 변환
프로퍼티 리스트 파싱을 자동으로 할 수 있다. propertyList
, propertyListFromStringsFileFormat
문자열을 프로퍼티리스트로 파싱하면 사전 객체를 리턴해준다.
비교
정렬을 위해서 비교 구문을 쓴다. compare:
는 합성글리프에 대한 연산이 정확하지 않으므로 localizedCompare:
나 localizedCaseInsentiveCompare:
를 많이 쓴다. 비교 함수의 결과는 NSComparisonResult
로 이는 NSOrderAscending | NSOrderEqual | NSOrderDescending
중 하나가 된다.
케이스 변환
capitalizedString
, lowercaseString
, uppercaseString
등이 있다.
숫자값
문자열 내용이 숫자인 경우 intValue
, floatValue
… 등의 즉시 변환 함수가 있다.
그외 다음 기능들이 있는데, 다 못적겠다….
* URL:
* 퍼센트로 인코딩하기
* file path:
* 파일 경로 구분자 추가/확장하기
* 확장자 확장
-
initWithCString:
,stringWithCString:
이라는 메소드가 있었지만, 없어졌다. 대신 인코딩방식을 주는 것은 가능하다. ↩