[Swift] 문자열 나누기 split()과 components() 를 알아보자!
📌 Swift

[Swift] 문자열 나누기 split()과 components() 를 알아보자!

코로나에 걸리고 여러가지 일에 겹쳐서 오랜만에 글을 쓰게 되었네요..
다시 열심히 해야지 😤

 

오늘은 Swift에서 문자열을 처리하는 방법중에 문자열을 쪼개야 하는 경우에 사용되는 split와 components 메소드에 대해서 알아보겠습니다. 알고리즘에서도 자주 사용되는 메소드이니 차이점을 알아두면 좋겠죠? 😋

 

 

split

split 메소드를 먼저 공식문서를 통해서 봅시다.

split method

 

위와같이 split 메소드는 separator, maxSplits, omittingEmptySubsequences 의 3가지 파라미터가 있습니다. 하나씩 알아봅시다!

 

📍 separator

Character 타입으로, 매개변수를 받아서 해당 인자를 기준으로 쪼개주는 역할을 합니다. 우리가 원하는 바로 그 역할이죠 🤓

let str = "Hello World"
let arr = str.split(separator: " ")

// 출력 : ["Have", "a", "nice", "day"]

 

📍 maxSplits

Int 타입으로 문자열을 분리하는 횟수를 뜻합니다. 간단히 말하면, 앞의 separator 메소드의 인자를 기준으로 몇 번을 쪼개는가를 뜻합니다. maxSplit: 1 로 하게된다면 그 인자만큼 1번만 쪼갠다는 뜻이 되겠습니다.

let str = "Have a nice day"
let arr = str.split(separator: " ", maxSplits: 2)

// 출력 : ["Have", "a", "nice day"]

 

📍 omittingEmptySubsequences

Bool 타입으로, false인 경우에는 separator의 인스턴스 결과마다 비어있는 하위 시퀀스("")를 반환하며, true인 경우는 비어있지 않은 하위 시퀀스를 반환합니다. 즉, 빈 시퀀스의 포함 유무라고 생각하면 되겠네요. 기본값은 true입니다. 

 

제 생각으로는 omittingEmptySubsequences 파라미터는 굳이 빈 시퀀스를 추가할 경우가 없어보여서 쓸 일이 많지 않을거같네요..? (주로 사용하는곳이 있다면 댓글로 알려주시면 감사하겠습니다 👍)

 

📍 return 타입

split의 return 타입은, 위의 공식문서 사진과 같이 "SubString" 입니다.

 

 

components

이번에는 components 메소드에 대해서 알아봅시다!

components method

 

components 메소드는 split 메소드와 다르게 separatedBy 매개변수 하나만 있습니다.

 

그리고 중요한점 한 가지는, components 메소드를 사용하기 위해서는 Foundation 프레임워크를 import 해주어야 사용이 가능합니다. 잊지 않도록 주의합시다 😋

 

📍 separatedBy

String 타입으로, 매개변수를 받아서 해당 인자를 기준으로 쪼개주는 역할을 합니다. 위의 split의 separator 파라미터와 동일한 역할을 하는 파라미터 입니다.

import Foundation

let str = "Have a nice day"
let arr = str.components(separatedBy: " ")

// 출력 : ["Have", "a", "nice", "day"]

 

📍 return 타입

components의 return 타입은, 위의 공식문서 사진과 같이 "String" 입니다.

 

이제 split과 components에 대해 알아보았으니, 이제 위의 내용을 토대로하여 간략하게 정리해봅시다!

 

 

split VS components

1. 파라미터의 개수

  • split : 3개의 파라미터 (separator, maxSplits, omittingEmptySubsequences)
  • components : 1개의 파라미터 (separatedBy)

 

2. import Foundation 여부

  • split : (사용 X) 스위프트 표준 라이브러리에 속해있으므로 Foundation을 import 해주지 않아도 괜찮습니다.
  • components : (사용 O) Foundation 프레임워크에 속해있으므로 Foundation을 import 해주어야 합니다.

 

3. 반환 타입이 다르다.

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

 

 

정리

split과 components는 파라미터의 사용 여부와 자신에게 맞는 스타일을 골라서 어떤 메소드를 주로 사용할지 정하시면 좋을거같습니다. 👊

 

속도에 대한 차이도 있다고는 하는데... 다음에 더 공부하여 업데이트하거나, 새로운 글로 작성해오도록 하겠습니다! 그럼 저는 이만~~~~~

 


 

Reference