iOS 공부하는 감자

split() vs components() 본문

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의 반환값은 문자열 배열

 

반응형

'Swift' 카테고리의 다른 글

Swift) Choosing Between Structures and Classes  (0) 2023.01.30
Operation, OperationQueue (feat. GCD)  (0) 2022.12.28
Swift) Property Wrapper  (0) 2022.07.20
문자열 다루기  (0) 2022.01.31