iOS/swift

swift - Split vs Components (문자열을 특정 separator로 나눠서 배열에 리턴)

돌맹이시터 2021. 8. 12. 23:58

 

 

먼저 관련 공식문서의 주소는 아래와 같다.

 

 

 

https://developer.apple.com/documentation/dispatch/dispatchdata/1780541-split/

 

Split 공식문서

 

 

 

https://developer.apple.com/documentation/foundation/nsstring/1410120-components/

 

Components 공식문서

 

 

 

 


 

 

 

components(separatedBy:)

 

 

 

1가지 매개변수(parameter)가 들어갈 수 있다.

 

separatedBy: 나누는 단위가 되는 요소

아래에 있는 Split 부분에서 자세히 정리할 것이다.

 

 

components function을 사용하기 위해서는 

Foundation이라는 프레임워크가 필요하기 때문에,

 

import Foundation을 입력해야 components를 사용할 수 있게 되는 것에 주의하여야 한다.

 

 


 

 

split(separator:maxSplits:omittingEmptySubsequences:)

 

 

3가지 매개변수(parameter)가 들어갈 수 있다.

 

 

separator : 나누는 단위가 되는 요소

 

예를 들어,

"오늘은 날씨가 좋습니다." 이라는 문자열이 있을 때,

separator를 공백으로 하여 이 문자열을 쪼갠다면 ["오늘은", "날씨가", "좋습니다."]와 같이 나누어질 것이다.

 

 

components를 사용했을 때와 다른 결과를 얻게 될 수도 있는데,

이유는 3번째 매개변수와 관련되어 있기 때문에 아래에 정리해두었다.

 

 

 

maxSplits : 최대로 나눌 수 있는 갯수를 지정

 

maxSplits >= 0 이어야 하며, (maxSplits+1)

예를 들어,

"오늘은 날씨가 좋습니다." 를 separator : 공백, maxSplits : 1로 지정하여 나눈다면, 

["오늘은", "날씨가 좋습니다."] 로 나누어진다. 최대 1번만 쪼갤 수 있기 때문에, 뒷부분에도 공백이 있지만 쪼개어지지 않고 뒷부분에 포함되어버린다.

 

 

 

omittingEmptySubsequences : empty 항목을 새로운 배열에 추가할지 말지를 선택

 

Bool값이므로 True or False가 들어갈 수 있다.

디폴트 값은 true이기 때문에 따로 입력하지 않는다면 omittingEmptySubsequences : true가 된다.

 

 

여기에서 Components를 사용했을 때와 큰 차이가 생긴다.

바로 선택의 여지가 있다는 것이다.

 

 

separator가 여러 개 이어져 있는 경우에 결과의 차이를 확인할 수 있는데,

예를 들어,

"나는   빡빡이가 아니다. " 라는 문자열을 보면

공백이 여러 개가 연달아 있는 부분이 존재(3칸)하며, 문장의 마지막에도 공백이 있다.

이 때

separator: " " (공백)으로 설정했을 경우

공백이 연달아 있는 경우, 그리고 마지막 공백 이후가 empty값을 갖게 된다.

 

 

omittingEmptySubsequences : true 이면, 이러한 empty 값을 생략하고 리턴한다.

--> ["나는", "빡빡이가", "아니다."]

 

omittingEmptySubsequences : false, 그리고 Components 기능을 사용했을 때 empty값을 그대로 리턴한다.

--> ["나는", "", "", "빡빡이가", "아니다.", ""]

 

 

 


 

위에서 정리해둔 내용을 다시 한 번 확인하기 위해 예제코드를 한 번 작성해봤다.

 

 

 

코드와 각각에 상응하는 결과는 위와 같으며,

 

Components에서와는 다르게 Split에서는 프레임워크를 따로 불러오지 않아도 되기 때문에

조금 더 처리속도가 빠르다.

 

'iOS > swift' 카테고리의 다른 글

swift - Array & Dictionary (basic)  (0) 2021.08.26
swift - Optional (basic)  (0) 2021.08.25
swift - Struct vs Class  (0) 2021.07.22
Swift - Class & Inheritance  (0) 2021.07.19
swift - immutability (구조체 안에서)  (0) 2021.07.01