자바스크립트) 한글 마지막 글자에 따라 로/으로, 을/를 어울리게 출력해주기

작성: 2021.06.18

수정: 2021.06.18

읽는시간: 00 분

Programming/javascrlpt

반응형
1

저는 한국어가 참 어려운 언어라고 생각합니다.

특히나 우리는 자연스럽게 을/를 , 로/으로 등을 붙여서 사용하지만, 컴퓨터는 그렇지 못합니다. 외국인들도 참 어렵게 느끼는 부분입니다.

위에서 보이는 것 처럼 을/를 로/으로 를 구분하지 못해서 참 어색하게 출력되는 부분이 있습니다.

2

이 부분을 해결 해 보려고 합니다.

일단 받침이 있는 단어인지 아닌지를 먼저 체크해주는 함수를 만듭니다.

// 받침이 있는 문자인지 테스트 해주는 함수 입니다.
const isSingleCharacter = function(text) {

 var strGa = 44032; // 가
 var strHih = 55203; // 힣

 var lastStrCode = text.charCodeAt(text.length-1);

 if(lastStrCode < strGa || lastStrCode > strHih) {
  return false; //한글이 아닐 경우 false 반환
 }
    return (( lastStrCode - strGa ) % 28 == 0)
}

유니코드 한글은 0xAC00 으로부터 초성 19개, 중성21개, 종성28개로 이루어지고 이들을 조합한 11,172개의 문자를 갖습니다.

'가' 문자로 부터 차이를 구한 뒤, 그 차이를 28로 나눈 나머지가 0 이라면 받침이 없는 글자입니다.

// '로' 가 붙어야 하는지 '으로'가 붙어야 하는지 체크해주는 함수
const roChecker = function(text){
    return text + (isSingleCharacter(text)? '로' : '으로'); 
}
// '를' 이 붙어야 하는지 '을'이 붙어야 하는지를 체크해주는 함수
const rulChecker = function(text){
    return text + (isSingleCharacter(text)? '를' : '을'); 
}

그래서 받침이 있는지 없는지 알아내는 함수를 이용해 각각 필요한 '을' 또는 '를' 을 붙여 반환해줍니다.

img

이제 방금 만든 을/를, 로/으로 체커를 이용해 출력을 해 보겠습니다.

img

img

이제 한글을 자연스럽게 출력 해 주는 것을 확인 할 수 있습니다!!

반응형