NSString 은 문자열 클래스임에도 불구하고 순수 문자열의 기능을 넘어서는 다양한 기능을 제공한다. 이 중 파일이나 폴더의 경로(path)와 관련된 기능들을 소개해본다.
- (NSString *)lastPathComponent
마지막 경로의 컴포넌트 문자열을 돌려준다. 즉 경로 구분자(/)를 이용해 문자열을 분리한 다음 마지막 문자열 아이템을 돌려준다고 보면 된다. 흔히 경로에서 파일 이름만을 뽑아낼 때 이용 할 수 있다.
예를 들어 @"/foo/bar/item" 문자열에 사용하면 @"item" 이 리턴된다.
- (NSString *)stringByDeletingLastPathComponent
위의 lastPathComponent 와는 반대되는 기능으로, 마지막 컴포넌트를 제외한 경로를 문자열로 돌려준다. 파일이 어떤 경로에 있는지 파악할 때 유용하게 사용 할 수 있다.
예를 들어 @"/foo/bar/item" 문자열에 사용하면 @"/foo/bar"가 리턴된다.
- (NSString *)stringByAppendingPathComponent:(NSString *)component
경로 문자열에 component 라는 경로를 추가할 때 이용한다.
예를 들어 @"/foo/bar" 에 @"item" 을 추가하면 @"/foo/bar/item" 이 조합되는 형식이다. 슬래쉬(/)는 자동으로 추가되니 신경쓰지 않아도 되어서 편하다.
- (NSString *)pathExtension
파일의 확장자명이 리턴된다. 파일의 확장자를 알아내야 할 경우 요긴하게 사용된다.
예를 들어 @"/foo/bar/item.txt" 라는 문자열에 사용하면 @"txt" 가 리턴된다.
- (NSString *)stringByDeletingPathExtension
위의 pathExtension과 반대로, 경로에서 확장자명을 삭제한 문자열을 리턴한다. 확장자를 제외한 파일 이름을 알아내야 할 때 위의 lastPathComponent와 조합해서 사용하면 유용한다.
예를 들어 @"/foo/bar/item.txt" 라는 문자열에 사용하면 @"/foo/bar/item" 이 리턴된다.
- (NSString *)stringByAppendingPathExtension:(NSString *)extension
위의 stringByDeletingPathExtension 과 반대로 이번에는 확장자명을 추가할 때 이용한다.
예를 들어 @"/foo/bar/item"에 @"txt"를 넘기면 @"/foo/bar/item.txt"가 리턴된다. 역시나 닷(.)이 알아서 붙으니 편하다.
이상의 API들을 조합하면 파일 이름과 경로와 확장자 이름 등을 잘 떼어내서 요리하기 편하다.
Popular Posts
-
Q. 1.3과 1.12 중 어느 버전이 더 최신 버전인가요? A. 1.12가 더 최신버전입니다. 위의 같은 질문류를 커뮤니티에서 본 적이 있는데 놀랍게도 1.3을 1.12보다 더 높은 버전으로 생각하는 사람이 많은 것 같았다. 그래서 이번에는 버...
-
제목대로 나는 안드로이드를 혐오하는데... 그 이유를 적기 보단 경험담을 적어볼까 한다. 직접 경험한, 그리고 주변 사람들의 경험담이다. 물론 글로 표현하기 위해 과장하거나 고쳤다 -_-; [참고] 이 글은 2011년 5월 경에 쓰여진 글입니다. ...
-
이번 글은 굉장히 유명한 수학 함수 3가지를 적어보는 글입니다. 그리고 오랜만에 구어체가 아닌 존대말(?)로 쓰는 글이기도 하겠네요. 이번에 언급하는 함수 세 가지, 즉 ceil(), floor(), round() 함수는 C 언어 시절부터 쓰이...
-
예전에 Vim에서 tags 파일 경로를 부모 디렉토리들로 지정해서 자동으로 태그를 지정하는 방법 을 포스팅 했던 적이 있다. 하지만 Emacs에서는 동일한 형태로 지정을 해서 사용하는게 안되었다. 이런 기능을 원했지만 검색으로 찾을 수는 없었다. ...
-
최신의 Emacs 22~23 에서는 한글 폰트 설정에 따른 불편함은 많이 사라진 편이지만, 역시 마음에 드는 폰트 설정은 힘든 편이었다. 특히 영문과 한글 폰트를 별도로 설정해야 하는 경우 크기를 맞추는 등의 삽질이 필요한 편이다.
-
sigsegv 검색을 통해 유입된 내역이 하나 보여서 잠깐 설명.
-
Vim이 강력한 편집기로써 군림하게 된 건 편한 키맵, 정규표현식, 그리고 이 매크로 레코딩 기능이 있기 때문이라고 감히 주장하고 싶다. 레코딩 기능은 사용자가 입력하는 키를 그대로 녹화해서 매크로로 만들어 주는 기능이다. 이 기능에 대해 간단히...
-
메소드(Method)란 클래스에 정의된 클래스 멤버 함수를 의미한다. 스위프트(Swift)에서는 클래스 뿐만 아니라 구조체에서도 동일하게 이 메소드를 정의 할 수 있다는 특징이 있다.
-
Git로 다수의 브랜치를 관리하며 브랜치간 머지(merge) 하기는 굉장히 간단한 일이다. 하지만 의외로 다른 브랜치의 일부 파일만 복사(즉 파일간 머지)해 오는 형태의 작업은 많이 하지 않나보다. 찾아보니 의외로 기존 명령어에 옵션을 하나 추가해서 ...
-
Swift 의 Range 기능은 1.0 이라는 초창기 버전 부터 존재했으며 Swift 버전이 올라감에 따라 여러 가지 기능이 붙거나 세분화 되었습니다. 그런데 제 블로그에서는 별도로 정리를 한 글이 없어서 이 범위(Range)에 대한 것을 정리해 봅니...
0 comments:
댓글 쓰기