[JS] 한글 조사붙이기

한글단어를 입력하고 조사를 입력하면 그에 알맞는 조사를 선택해줍니다.

예를 들어…
Josa('태극기', '은');
이라고 실행하면 반환되는 결과값은 "태극기는" 이 되는 식입니다.

조사는 [이, 가, 은, 는, 을, 를] 만 입력가능합니다.
(이것말고 또 받침에 따라 달라지는 조사가 있던가요?)

코드는 다음과 같습니다.

function Josa(txt, josa)
{
	var code = txt.charCodeAt(txt.length-1) - 44032;
	var cho = 19, jung = 21, jong=28;
	var i1, i2, code1, code2;

	// 원본 문구가 없을때는 빈 문자열 반환
	if (txt.length == 0) return '';

	// 한글이 아닐때
	if (code < 0 || code > 11171) return txt;

	if (code % 28 == 0) return txt + Josa.get(josa, false);
	else return txt + Josa.get(josa, true);
}
Josa.get = function (josa, jong) {
	// jong : true면 받침있음, false면 받침없음

	if (josa == '을' || josa == '를') return (jong?'을':'를');
	if (josa == '이' || josa == '가') return (jong?'이':'가');
	if (josa == '은' || josa == '는') return (jong?'은':'는');
	if (josa == '와' || josa == '과') return (jong?'와':'과');

	// 알 수 없는 조사
	return '**';
}

…. 쓸데가 없으려나. -_-;;

  1. 질문 있습니다.

    function textCounter(field, countfield, maxlimit) {
    var x;
    var minus;
    minus=0;
    if (field.value.length > maxlimit) { // if too long...trim it!
    alert('글자 입력 제한');
    return;
    } else {
    li=field.value.length;
    for(k=0;k4) minus+=2;
    else minus++;
    }
    countfield.value = maxlimit - minus;
    }
    }

    위의 소스에서요 한글일때 +2 가 안되는데...
    고쳐 주실 수 있으신가요? 부탁 드립니다.

  2. 아무리 해봐도 minus는 -1씩 깍입니다..
    한글은-2씩 영문은 -1 특수문자는 -2여야하는데요. .ㅠ.ㅠ;;;

  3. 와~ 넘 신기하네요 ^^
    근데 궁금한게요..
    code % 28 == 0
    이렇게 해주는 이유가 먼지를 몰겠어요..
    28은 무슨 기준으로 나온 상수에요??

  4. 오마르// 한글에서 가능한 종성숫자가 28개이거든요. 유니코드 체계가...

    유니코드 = 유니코드 상수 + 초성*중성갯수*종성갯수 + 중성*종성갯수 + 종성;

    이렇게 나옵니다. 초성이나 중성의 코드번호는 없을 수 없겠지만, 종성은 없을 수도 있는데, 종성이 없다면 0, 종성이 'ㄱ' 이라면 1 이런 식이거든요. 따라서 종성갯수인 28로 나누어 떨어진다면 그건 종성이 없다...라고 판단하는 거죠. 물론 그 전에 유니코드 상수 뺐던거 보셨죠? (이 경우엔 44032가 유니코드 상수였습니다.)

  5. 아.. 그렇군요.. 감사합니다..
    그런데 유니코드로 초성, 중성, 종성이 무엇인지 알아 낼수 있나요??

  6. 네 가능합니다. 유니코드 체계가 규칙성을 가지고 있기 때문이죠.
    자바스크립트로 코드값 : 글자를 찍어보시면 쉽게 아실 수 있을 겁니다.

  7. 하늘아부지 // 오랜만이예요~ 새로 템플릿 엔진을 공개하셨더군요. 방금 보고 오는 길입니다. 아직 보지는 못하고 릴리즈 소식만 알고 있는.... -_-;;

댓글을 남겨주세요

This site uses Akismet to reduce spam. Learn how your comment data is processed.