특정 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]}`
}
반응형
'JavaScript > javascript' 카테고리의 다른 글
Number Formater (1000 -> 1K, 만원 단위만) (0) | 2023.12.08 |
---|---|
Keyup, Keydown 이벤트가 2번씩 호출 될 때 해결법 (0) | 2023.10.31 |
기준일의 요일로 시작일과 종료일 구하기 (0) | 2023.04.04 |
moment.js 대신 date formater 만들어서 사용하기! (0) | 2023.03.06 |
심심해서 만들어본 랜덤번호 추첨기 (0) | 2022.11.11 |