split(separator:maxSplits:omittingEmptySubsequences:)
func split(
separator: Self.Element,
maxSplits: Int = Int.max,
omittingEmptySubsequences: Bool = true
) -> [Self.SubSequence]
Character
타입으로, 매개변수를 받아서 해당 인자를 기준으로 String
을 쪼개주는 역할이다.Int
타입으로 문자열을 몇번 분리할지 정해주는 역할이다. 기본값으로 Int.max
가 들어가 있으며, maxSplits
를 1로 설정하면 separator
를 기준으로 1번만 문자열을 나눈다는 뜻이 된다.Bool
타입으로 false인 경우 컬렉션의 각 연속된 구분 요소 쌍과 컬렉션의 시작 또는 끝에 있는 구분 요소의 각 인스턴스에 대한 결과에서 빈 시퀀스가 반환된다. separator
를 기준으로 앞 또는 뒤에 빈 값이 있다면 그걸 살릴지 말지 결정하는 요소다.SubString
을 담은 배열을 반환한다.separator
의 타입이 Character
로 고정이기 때문에 한번에 한가지 인자로만 나눠야 하는 단점이 있다.components(separatedBy:)
func components(separatedBy separator: CharacterSet) -> [String]
CharacterSet
타입으로, String
을 분할하는 데 사용할 문자가 들어 있는 문자 집합 이다.String
을 담은 NSArray
오브젝트를 반환한다.separator
하나만 있어 선택할 수 있는 옵션이 많지 않지만, separator
의 타입이 CharacterSet
으로 문자 집합 이기 때문에 한번에 여러가지의 Character
로 나눌 수 있는 장점이 있다.split > component
"" empty subsequence, 즉 빈 값의 처리에 있다.
split
은 omittingEmptySubsequence
의 Bool
값에 따라서 변하지만, components
는 항상 빈값을 포함해서 돌려주게 됨으로 만약 " " (space) 를 separator
로 가졌을 때 쪼개려는 문자열에 빈 공간이 많다면 그만큼 빈값 ("") 을 반환하게 되므로 성능적으로 느려지게 된다.
split: 여러 매개변수로 입맛에 맞게 사용할 수 있지만, 한번에 하나의 Character
로만 나눠야 하는 단점이 있다.
components: 선택할 수 있는 옵션이 적지만, 한번에 여러개의 Character
로 나눌 수 있는 장점이 있다.
결국, 상황에 맞게 사용하는 것이 중요할 것 같다. 어떤 방식이든 채택할 수 있는 방법이 늘어난 것은 좋은 일이니 상황에 맞게 두 메서드를 선택해서 사용하면 될거 같다.