먼저 관련 공식문서의 주소는 아래와 같다.
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 |