Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Observable
- tableView
- uitableview
- combine
- ios
- ribs
- RxCocoa
- 리팩토링
- 클린 코드
- UITextView
- MVVM
- 리펙터링
- uiscrollview
- HIG
- rxswift
- collectionview
- Human interface guide
- clean architecture
- 스위프트
- swift documentation
- map
- SWIFT
- 애니메이션
- swiftUI
- Protocol
- 리펙토링
- Refactoring
- UICollectionView
- Clean Code
- Xcode
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 한글 문자열 처리 - 초성, 중성, 종성과 유니코드 본문
초성, 중성, 종성 개념
- 한글 음절이라는 것이 있고, 한글을 소리나는 단위로 나타낸 것이며 '감', '가', '김'과 같은 하나를 한글 음절 하나라고 의미
- 한글 음절은 3가지의 첫소리, 가운뎃소리, 끝소리로 나누고 각각을 초성, 중성, 종성이라고 명명
- 초성: ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ (19개)
- 중성: ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ (21개)
- 종성: ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ (27개) + ""(empty인 경우를 합하면 총 28개)
- 한글의 전체 개수: 19 × 21 × ( 27 + 1 ) = 11172
초성, 중성, 종성과 유니코드
- 글자에 대한 키와 유니크한 숫자 값이 1:1로 맵핑된 코드 테이블
- "가" 글자는 유니코드로 0xAC0으로 표현
- swift에서는 문자열 앞에 "\u" prefix를 붙이고 대괄호로 감싸면 유니코드를 문자열로 표현이 가능
print("\u{AC00}") // 가
- 또 반대로 문자열을 유니코드 스칼라로 표현하면, 유니코드 값 획득이 가능
Int("가".unicodeScalars.reduce(0) { $0 + $1.value }) // 44032
- 10진수로 결과가 나오므로, 16진수로 표현하면 "가" 문자열은 "ac00" 16진수로 표현된다는것을 확인 가능
let unicodeInt = Int("가".unicodeScalars.reduce(0) { $0 + $1.value }) // 44032
let unicode16Int = String(unicodeInt, radix: 16)
print(unicode16Int) // ac00
* 참고
- https://www.unicode.org/charts/PDF/UAC00.pdf
- https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B8%80_%EC%9D%8C%EC%A0%88
'iOS 응용 (swift)' 카테고리의 다른 글
Comments