본문 바로가기
3️⃣ Swift/Swift 정리

[Swift] split과 components의 차이점

by seolhee2750 2021. 8. 8.

split이 components보다 성능이 좋다는 사실을 깨닫고,,

둘의 차이점을 공부해보려한다. 🐶


📎 components

먼저 components에 대한 정보를 알아보자.

공식 개발문서에서 components의 설명을 가져왔다.

✔️ 리턴 타입

String을 입력받고, separator를 기준으로 나눈 [String]을 반환한다.

 

✔️ 프레임워크

Foundation 프레임워크를 import해줘야만 사용이 가능하다.

 

✔️ 파라미터

separator 하나만을 매개변수로 가진다. 


📎 split

이번엔 split에 대해 알아보자. 

마찬가지로 공식문서를 첨부했다.

✔️ 리턴 타입

Character를 입력받고, [Substring] 형태로 반환한다.


✔️ 프레임워크

Swift 표준 라이브러리에 포함되어있기 때문에, 프레임워크를 사용할 필요가 없다.

 

✔️ 파라미터

총 세 가지 파라미터를 가진다.

간단한 예제를 같이 첨부했다.

  1. separator
    Character 타입으로 입력, 해당 인자를 기준으로 나눈다.
  2. maxSplit
    Int 타입으로 입력, 나누는 횟수를 정해준다. (기본값은 Int.max)
  3. omittingEmptySubsequence
    Bool 타입으로 입력받고, empty subsequence를 반환할지 결정한다. (기본값은 true)


💥 split과 components의 차이점

위에서 정리했듯 리턴타입, 파라미터, 그리고 프레임워크 사용 유무까지. 모두 다르고, 모두 중요하다.

그런데 여기서 새롭게 알 수 있는 점이 하나 있다.

 

바로 split의 파라미터 중 하나인 omittingEmptySubsequence에 대한 것인데,

위에서 확인했듯 split은 empty subsequence를 반환할지 말지를 내가 결정할 수 있다.

하지만 components는 결정이 불가하고, empty subsequence를 반환하는 것이 기본이다.

따라서 components를 사용하면 문자열에 빈공간이 많을수록 empty subsequence를 많이 반환하게 된다.

이것이 바로 split이 components보다 성능이 좋다고 하는 중요한 이유이다.

 

split과 components의 empty subsequence 반환 비교를 첨부한다.

위의 str 문자열에는 우리가 components와 split의 구분자로 넣어줄 공백 이외에 빈 공간을 더 넣어주었다.

각각 components, split의 결과를 비교하면,

둘 다 구분자 이외의 다른 파라미터는 지정하지 않았는데도 불구하고

👉  components는 empty subsequence를 반환하는 것이 기본이며 바꿀 수 없기 때문에

위와같이 빈공간을 포함하는 문자열 배열이 반환되었음을 확인할 수 있다.

👉  반대로 split의 경우에는 기본이 empty subsequence를 반환하지 않는 것이 기본이기 때문에 (변경도 가능)

위와같이 빈공간은 포함하지 않는 배열을 반환했다.


이렇게 오늘은 split과 components의 차이점을 살펴봤다.

이전까지는 그냥 반환타입이 다르다는 것만 알고서,,

[String]을 반환해주는 components가 더 편한 느낌에 components를 애용했는데,

앞으로는 split을 열심히 써보도록 해야겠따,, 👩🏻‍💻

댓글