안녕하세요 공부하는 개발자 입니다.
오늘의 포스팅은 String을 사용하면서 항상 같이 따라다니는 option에 대해서 포스팅 하겠습니다.
첫번째는 가장 많이썼던 case Insensitive options 입니다.
case Insensitive options의 경우에는 대소문자를 무시하고 코드를 실행 시킵니다.
두번째는 유니코드를 직접 비교하는 Literal option 입니다.
1
2
3
4
5
|
let a = "\u{D55C}"
let b = "\u{1112}\u{1161}\u{11AB}"
a == b
a.compare(b) == .orderedSame
|
cs |
둘다 "한"이라는 글자임으로 true가 나옵니다. 다만 유니코드가 다르기 때문에
1
|
a.compare(b, option: [.literal]) == .orderedSame
|
cs |
이런 방식으로 확인을하면 false가 나오게 됩니다.
세번째는 c입니다.
backwards Option을 이해하려면 먼저 leading과 trailing의 개념을 알아야 합니다.
leading은 글을 읽기 시작하는 경우 입니다. 반대로 trailing의 경우는 마지막이 되겠죠
각 문화권마다 글자를 읽는 순서가 다릅니다. 보통 영어나 한국어는 왼쪽에서 오른쪽으로 읽는 것이 일반적이지만
아랍의 경우처럼 오른쪽에서 왼쪽을로 읽는 경우도 있습니다.
이런식으로 backwards Option을 이용하면 검색을 진행할 때 leading과 trailing의 순서를 변경할 수 있습니다.
네번째는 Anchored Option입니다.
사실 이해가 안가는 옵션 중 하나인데 Anchored Option의 경우에는 문자열 검색의 경우 시작부분과 끝부분만 검색합니다.
다섯번째는 Numeric Option입니다.
Numeric Option의 경우에는 문자열 안의 숫자를 문자열이 아닌 숫자로 만들어 비교할 수 있습니다.
1
2
3
4
|
let file9 = "file9.txt"
let file10 = "file10.txt"
file9 < file10
|
cs |
이경우에 마지막은 false일까요 true일까요?
바로 false입니다. 왜냐하면 1이 9보다 문자열로 보았을때는 작기 때문입니다.
이러한 오류를 없애기 위해 Numeric Option을 이용합니다
1
|
file9.compare(file10, option: [.numeric]) == .orderedAscending
|
cs |
이런식으로 비교를 하면 9와 10이 숫자로 비교를 할 수 있어 정상적으로 true가 출력됩니다.
여섯번째는 Diacitic Option입니다.
주로 악센트를 비교할때 사용을 하기 때문에 그렇게 많이 쓰이지 않습니다.
일곱번째는 regular expression Option입니다.
정규식을 적용하는 옵션으로 이 옵션을 선언하지 않는다면 일반 문자열로 선언이 되어버리지만
조건에 regular expression 을 추가한다면 정규식의 기능을 진행하게 됩니다.
'Ios > Swift' 카테고리의 다른 글
[Swift] Swift Collection Array_2 스위프트 배열_2 (0) | 2022.06.26 |
---|---|
[Swift] Swift Collection_Array 스위프트 배열 (0) | 2022.06.25 |
[Swift] Comparing String 문자열 비교하기 (0) | 2022.06.23 |
[Swift] String Editing 스위프트 문자열 편집하기 (0) | 2022.06.22 |
[Swift] swift subString 문자열 자르기 (0) | 2022.06.21 |