출처
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tk2rush90&logNo=221085154547
<script>
//자모음 분리
function getConstantVowel(kor) {
const f = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ',
'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ',
'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
const s = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ',
'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ',
'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'];
const t = ['', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ',
'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ',
'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ',
'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
const ga = 44032;
let uni = kor.charCodeAt(0);
uni = uni - ga;
let fn = parseInt(uni / 588);
let sn = parseInt((uni - (fn * 588)) / 28);
let tn = parseInt(uni % 28);
return {
f: f[fn],
s: s[sn],
t: t[tn]
};
};
</script>
인터넷에 찾아보니 여러 방법이 있었지만, 위 출처의 글이 가장 직관적이고 이해하기 편하여서 내용을 참조하였다. 물론 모든 자,모음을 따로 분리하여 한 글자로 이루어 질 수 있는 모든 경우의 수를 만드는 방법도 있겠으나, 너무 비효율적이다.
이 글의 작성자 분은 각각의 글자에 대한 Unicode의 규칙을 찾고, 그걸 통해 함수를 만들어 분리가 될 수 있게 하셨다.