반응형
유니코드에서 한글 분리
유니코드에서 한글은 0xAC00에서 0xD7A3 사이의 코드 값을 갖는다. 각 16진수 값은 10진수로 표시하면 44032와 55203으로 총 11,172개. 유니코드 내 한글은 초/중/종성의 조합으로 표현되며, 초성 19개, 중성 21개, 종성 28개를 조합하여 하나의 글자가 된다.
초성 = ((문자코드 - 0xAC00) / 28) / 21
중성 = ((문자코드 - 0xAC00) / 28 % 21
종성 = (문자코드 - 0xAC00) % 28
초성 구하는 코드 예시
let hangul = ["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"]
func chosungCheck(word: String) -> String {
let octal = word.unicodeScalars[word.unicodeScalars.startIndex].value
let index = (octal - 0xac00) / 28 / 21
return hangul[Int(index)]
}
chosungCheck(word: "바다") // "ㅂ"
chosungCheck(word: "하늘") // "ㅎ"
let hangul = ["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"]
let word = "하늘"
let octal = word.unicodeScalars[word.unicodeScalars.startIndex].value // 54616
let unicode = String(format: "0x%x", b) // "0xd558"
let index = (octal - 0xac00) / 28 / 21 // 18
hangul[Int(x)] // "ㅎ"
,
참고 : sooopd_UnicodeScalar, minsone 한글풀어쓰기, Section Index Title
728x90
반응형
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
[Swift iOS] 앱 버전정보 가져오기 (0) | 2021.06.03 |
---|---|
[Swift iOS] 사파리로 링크 열기 Open url in safari (0) | 2021.06.02 |
[Swift iOS] JSON parsing : ObjectMapper vs. Codable (0) | 2021.05.31 |
[Swift iOS] UIView layout update cycle & methods (0) | 2021.05.28 |
[Swift iOS] UIActivityViewController 카톡으로 공유하기 (0) | 2021.05.27 |