일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- API
- MVC
- replacesubrange()
- 대문자소문자
- tableView
- zip()
- Info.plist
- suffix()
- Segue
- 싱글톤
- swift
- prefix()
- joined()
- 알고리즘
- xib
- Autolayout
- 코드업 파이썬 기초 100제
- 코딩테스트
- String()
- uisearchbar
- 라이징캠프
- github
- alamofire
- 프로그래머스
- GIT
- reduce()
- uikit
- IOS
- 클론코딩
- components()
- Today
- Total
Daeng iOS
[Swift] components()와 split()에 대해.. 본문
이번에 정리할 내용은 ,,
문자열 쪼개기에 많이 사용하는 components 임미다
주어진 separator로 나뉘어진 receiver의 하위문자열을 포함하는 배열을 반환
[ parameters ] separatedBy → string을 나눌 구분자 |
seperatedBy에 구분자 String을 넣어주면
그 String을 기준으로 문자열을 쪼개서 String배열을 반환한다
그런데 코테를 하다보니까 seperatedBy에 String 으로된 배열을 넣어주길래
배열로 쓰지않아도 잘 쪼개지는데 배열로 쓰는 이유가 뭘까,, 생각하다보니?!
배열에 넣었다는건 여러개를 넣을 수 있는 것이고
그렇다는건 구분자를 여러개로 줄 수 있는게 아닐까 싶어서 실험해봤다!!!!
위와 같이 배열안에 여러개의 String을 넣어주면
그 여러개를 기준으로 문자열을 쪼갠다
기준을 여러개로 줄 수 있는 것..!
.
.
.
또, components와 쓰임새 비슷한 자식으로 Split()가 있는데 ~~
그게 뭔지 한번 살펴보자
- split(separator:maxSplits:omittingEmptySubsequences:)
주어진 요소와 동일한 요소 주변에서, 컬렉션의 가능한 가장 긴 서브 시퀀스를 순서대로 반환한다
[ Parameters ] seperator -> 분할되어야하는 요소, 해당 인자를 기준으로 문자열을 쪼갠다 maxSplits -> 문자열을 분리하는 최대 횟수, 앞의 seperator 인자를 기준으로 몇번을 쪼개는가를 뜻한다 omittingEmptySubsequences -> false인 경우 seperator의 인스턴스 마다 비어있는 하위 시퀀스 ("")를 반환하며, true인 경우는 비어있지 않은 하위 시퀀스를 반환한다. 기본 값은 true |
seperator 파라미터에는 쪼갤 기준 문자열을 넣어주고
maxSplit으로 최대 쪼갤 횟수까지도 지정해 줄 수 있음
(maxSplits 인자는 넣어주지 않으면 있는 문자열을 다 쪼개지만
원하는 만큼 쪼개려면 옵션을 넣어주면 될 것 같다 !!)
-> 아래에 예시 코드도 있음
그리고 components()와 split()을 비교해보자면
[ components() 와 split() 비교 ] - return type components() 는 [String]을 반환 split() 는 [Substring]을 반환 (-> String으로 사용하려면 map으로 일괄 변환해줘서 써도될듯) - Foundation 프레임워크 import components() 는 Foundation을 import O split() 는 Foundation을 import X - 성능의 차이 split가 components 에 비해 성능이 좋다 (”” empty subsequence의 처리에 있어서 성능이 좋다) split은 omittingEmptySubsequence 파라미터의 bool 값에 따라서 변하지만 components는 항상 empty subsequence를 돌려주게 되므로 만약 space를 separator로 가졌을 때 쪼개려는 문자열에 빈 공간이 많다면 그만큼 ”” empty subsequence를 반환하게 되므로 성능적으로 느리다고 한다 |
여기서 마지막 줄을 좀 더 쉽게 이해해보기 위해서 이것저것 찍어보았다
" "(공백)을 쪼개는 기준으로 가질 경우, 쪼갤 문자열에 빈 공간이 많다면
split()은 ""(empty subsequence)를 포함할지 안할지 정할 수 있지만(디폴트는 포함안함)
components는 무조건 포함하기 때문에 성능의 차이가 나는 것 같다!
끝 ..~
'IOS > Swift' 카테고리의 다른 글
[Swift] 대소문자 변환 (0) | 2024.05.08 |
---|---|
[Swift] String(repeating: count:)에 대해 .. (0) | 2024.05.07 |
[Swift] 고차함수 map(_:)에 대해.. (0) | 2024.05.07 |
[Swift] readLine(strippingNewline:)에 대해 (0) | 2024.05.06 |
[Swift] print(_:separator:terminator:)에 대해 (0) | 2024.05.06 |