split, components 메서드

Wonbi·2022년 9월 24일
1

✅ 학습 내용

📌 split, components 메서드

💎 split(separator:maxSplits:omittingEmptySubsequences:)

✏️ Declaration

func split(
    separator: Self.Element,
    maxSplits: Int = Int.max,
    omittingEmptySubsequences: Bool = true
) -> [Self.SubSequence]
    1. separator:
    • Character 타입으로, 매개변수를 받아서 해당 인자를 기준으로 String을 쪼개주는 역할이다.
    1. maxSplits:
    • Int 타입으로 문자열을 몇번 분리할지 정해주는 역할이다. 기본값으로 Int.max 가 들어가 있으며, maxSplits를 1로 설정하면 separator를 기준으로 1번만 문자열을 나눈다는 뜻이 된다.
    1. omittingEmptySubsequences:
    • Bool 타입으로 false인 경우 컬렉션의 각 연속된 구분 요소 쌍과 컬렉션의 시작 또는 끝에 있는 구분 요소의 각 인스턴스에 대한 결과에서 빈 시퀀스가 반환된다.
    • 쉽게말해, separator를 기준으로 앞 또는 뒤에 빈 값이 있다면 그걸 살릴지 말지 결정하는 요소다.
    1. return 타입
    • 자기 자신의 타입의 서브시퀀스를 담은 배열, 즉 SubString을 담은 배열을 반환한다.

✏️ 특징

  • 스위프트 표준 라이브러리에 속해있어 Foundation을 import해주어야 사용 가능하다.
  • O(n)의 시간 복잡도를 가지며, n은 컬랙션의 길이에 따라 늘어난다.
  • 여러 옵션이 있어서 다양한 상황에 맞게 사용할 수 있지만, separator의 타입이 Character로 고정이기 때문에 한번에 한가지 인자로만 나눠야 하는 단점이 있다.

💎 components(separatedBy:)

✏️ Declaration

func components(separatedBy separator: CharacterSet) -> [String]
    1. separatedBy separator:
    • CharacterSet 타입으로, String을 분할하는 데 사용할 문자가 들어 있는 문자 집합 이다.
    1. return 타입
    • 나누어진 String을 담은 NSArray 오브젝트를 반환한다.

✏️ 특징

  • 스위프트 표준 라이브러리에 속해있지 않아, Foundation을 import해주지 않아도 사용 가능하다.
  • 매개변수가 separator 하나만 있어 선택할 수 있는 옵션이 많지 않지만, separator의 타입이 CharacterSet으로 문자 집합 이기 때문에 한번에 여러가지의 Character로 나눌 수 있는 장점이 있다.

💎 split vs components

✏️ 매개변수의 갯수

  • split : 3개 separator, maxSplit, omittingEmptySubsequeneces
  • components : 1개 separator

✏️ return 타입

  • split : [Substring]
  • components : [String]

✏️ Foundation 프레임워크의 import 여부

  • split : X
  • components : O

✏️ 성능의 차이

  • split > component

  • "" empty subsequence, 즉 빈 값의 처리에 있다.

  • splitomittingEmptySubsequenceBool 값에 따라서 변하지만, components는 항상 빈값을 포함해서 돌려주게 됨으로 만약 " " (space)separator로 가졌을 때 쪼개려는 문자열에 빈 공간이 많다면 그만큼 빈값 ("") 을 반환하게 되므로 성능적으로 느려지게 된다.

✏️ 상황에 맞는 사용

  • split: 여러 매개변수로 입맛에 맞게 사용할 수 있지만, 한번에 하나의 Character로만 나눠야 하는 단점이 있다.

  • components: 선택할 수 있는 옵션이 적지만, 한번에 여러개의 Character로 나눌 수 있는 장점이 있다.

  • 결국, 상황에 맞게 사용하는 것이 중요할 것 같다. 어떤 방식이든 채택할 수 있는 방법이 늘어난 것은 좋은 일이니 상황에 맞게 두 메서드를 선택해서 사용하면 될거 같다.

0개의 댓글