본문으로 바로가기

특정 String을 넣어서 비교해서 "한글'을'" 형태로 뱉어줄 수 있지만,

해당 String이 없다면 계속해서 비교를 추가해야하는 형태이길래 찾아보고 코드를 작성하였습니다.

 

받침 O 받침 X

 

function determineParticle(str) {
  // 문자열인지 한글인지 확인합니다.
  if (/^[가-힣]+$/.test(str)) {
    // 문자열의 마지막 문자의 유니코드 값을 가져옵니다.
    const unicode = str.charCodeAt(str.length - 1)

    // 해당 유니코드 값에서 한글의 시작인 44032를 빼고, 28로 나누어 받침 코드를 계산합니다.
    const letterConsonant = (unicode - 44032) % 28

    // 받침 코드가 0이면 "를"을 반환하고, 그 외의 경우에는 "을"을 반환합니다.
    return `${str}${!letterConsonant ? '를' : '을'}`
  }
  return str
}

 

위 코드에서 "을/를"로 하였으나, 위 표에 적힌 대로 바꾼다면 해당 형태로 나올 것이고,
아니면 추가 parameter로 형태를 선택하는 옵션을 추가하면 될 것 같습니다.

const example = {
  a: ['을', '를'],
  b: ['은', '는'],
  c: ['이', '가'],
  d: ['과', '와']
}
function determineParticle(str, opt) {
  ...

  return `${str}${!letterConsonant ? example[opt][1] : example[opt][0]}`
}
반응형