Swift
split() vs components()
DongTaTo
2022. 6. 4. 16:24
반응형
공통 :
- 특정 문자를 기준으로 문자열을 분리하여 Collection 형태로 반환한다.
Split()
- [Substring] 형태로 반환한다. (서브스트링은 원본값의 메모리를 공유하므로, 메모리가 조금 더 효율적으로 작동됨) 맨 아래 참고
- 클로저를 사용하여 (분리하는데) 기준이 되는 문자를 구체적으로 정의할 수 있다. (활용도가 좋아짐) // CharacterSet 사용 불가
- maxSplit 매개변수를 사용하여 최대 분리될 수 있는 횟수를 정해줄 수 있다. (default : Int.max)
- omittingEmptySubsequencece 매개변수는 Bool을 입력받는다. (= 빈 시퀸스 생략)
- true : 비어있지 않은(non-empty) 서브 시퀸스만 반환한다. (기본값)
- false : separator의 인스턴스 결과에 빈(empty) 서브 스퀸스를 돌려준다.
var userName = "a i ! d ! e n"
// 클로저 사용 예시
var removed = userName.split(whereSeparator: {
$0 == " " || $0 == "!"
}).joined()
print(removed) // aiden
Components()
- [String] : 문자열 배열 형태로 반환한다.
- separatedBy 매개변수로 전달하는 특정 값을 기준으로 문자열을 분리한다. (CharacterSet) // 클로저 사용 불가
split이 components보다 빠르게 동작한다.
1) omittingEmptySubsequencece의 차이
- split은 빈 시퀸스의 처리를 선택할 수 있는 반면, components는 빈 시퀸스가 반드시 포함된 결과를 반환한다.
- ex) 공백을 기준으로 분리하면서 빈칸이 있을 때, ""을 돌려줄건지 여부
- Zedd님 글 참고..
2) split의 반환값은 Substring이다.
- Substring(String.SubSequence)는 원본 문자열의 메모리를 공유받기 때문에 메모리 공간을 조금 더 효율적으로 사용한다.
- components의 반환값은 문자열 배열
반응형