[Swift] 한글 종성받침 유무에 따라 '을/를' 반환하기

2018. 12. 13. 16:08iOS/Swift

한글 유니코드 값

 

초성: ((한글 유니코드 값 - 0xAC00 / 28) / 21)

중성: ((한글 유니코드 값 - 0xAC00 / 28) % 21)

종성: (한글 유니코드 값 - 0xAC00 % 28) 

 

func postPositionText(_ name: String) -> String {
	// 글자의 마지막 부분을 가져옴	
    guard let lastText = name.last else { return name }     
	// 유니코드 전환
    let unicodeVal = UnicodeScalar(String(lastText))?.value 

    guard let value = unicodeVal else { return name }
	// 한글아니면 반환
    if (value < 0xAC00 || value > 0xD7A3) { return name }   
	// 종성인지 확인
    let last = (value - 0xAC00) % 28                        
	// 받침있으면 을 없으면 를 반환
    let str = last > 0 ? "을" : "를"      
    return name + str
}

 

 

0 이상이면 받침이 있음, 아니면 받침이 없음!