본문 바로가기

JavaScript

[#. JavaScript] 초성, 중성, 종성 구하기 / 앞 단어에 따라 은, 는, 이, 가 조사 붙이기

반응형

 

 

 

 

앞에 오는 단어에 따라 은, 는, 이, 가를 붙이도록 하고 싶다

 

한글은 초성, 중성, 종성으로 이루어져 있다

 

초성: 19자 (ㄱ, ㄲ, ㄴ, ㄷ...)

중성: 21자 (ㅏ, ㅐ, ㅑ, ㅒ...)

종성: 28자 (ㄱ, ㄲ, ㄳ, ㄴ...)

 

19x21x28 = 11172

55203-44032+1=11172

 

유니코드에서 한글은 10진수로 44032 ~ 55203 까지다 

charCodeAt() 메서드는 주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환한다

 

 

'가'.charCodeAt(0);	// 44032

 

 

는 44032, 은 44033이다

 가에 종성을 다 붙이고 나면 개에 종성을 붙이는 순서로 이어진다

 

 

초성 얻기

 

unicode 정수값을 uni라고 했을 때

parseInt((uni - 44032) / (21 * 28))

=> 0 ~ 18 사이의 값이 나오는데, 초성 순서와 일치한다 

 

ㄱ = 0, ㄲ = 1

 

# 초성 얻기

var uni = '꽃'.charCodeAt(0);	
console.log(parseInt((uni - 44032) / (21 * 28)));	// 1

var uni = '달'.charCodeAt(0);	
console.log(parseInt((uni - 44032) / (21 * 28)));	// 3

 

 

 

 

중성 얻기

 

unicode 정수값을 uni라고 했을 때

parseInt(((uni - 44032) % (21 * 28)) / 28)

=> 0 ~ 20 사이의 값이 나오는데, 중성 순서와 일치한다 

 

ㅏ = 0, ㅐ = 1, ㅣ = 20

 

# 중성 얻기

var uni = '달'.charCodeAt(0);	
parseInt(((uni - 44032) % (21 * 28)) / 28);	// 0

var uni = '일'.charCodeAt(0)
parseInt(((uni - 44032) % (21 * 28)) / 28);	// 20

 

 

 

 

종성 얻기

 

unicode 정수값을 uni라고 했을 때

parseInt(((uni - 44032) % (21 * 28)) % 28)

=> 0 ~ 27 사이의 값이 나오는데, 종성 순서와 일치한다 

 

종성 없음 = 0, ㄱ = 1, ㅎ = 27

 

# 종성 얻기

var uni = '밤'.charCodeAt(0);	
parseInt(((uni - 44032) % (21 * 28)) % 28);	// 16

var uni = '차'.charCodeAt(0)
parseInt(((uni - 44032) % (21 * 28)) % 28);	// 0

 

 

 

 

 

 

 

 

 

반응형