한글단어를 입력하고 조사를 입력하면 그에 알맞는 조사를 선택해줍니다.
예를 들어…
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 '**';
}
…. 쓸데가 없으려나. -_-;;
질문 있습니다.
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;k
else minus++;
}
countfield.value = maxlimit - minus;
}
}
위의 소스에서요 한글일때 +2 가 안되는데...
고쳐 주실 수 있으신가요? 부탁 드립니다.
아무리 해봐도 minus는 -1씩 깍입니다..
한글은-2씩 영문은 -1 특수문자는 -2여야하는데요. .ㅠ.ㅠ;;;
저....
x=field.value.charAt(li); 이 부분을요.
x=field.value.charAt(k); 이렇게 써야 제대로 된 거 아닐까요?
🙂
멋지군요..
요즘에 한글처리떄문에 골머리를 썩고 있는데..
제게 중요한 정보가 될거 같습니다 ^^
감사합니다
와~ 넘 신기하네요 ^^
근데 궁금한게요..
code % 28 == 0
이렇게 해주는 이유가 먼지를 몰겠어요..
28은 무슨 기준으로 나온 상수에요??
오마르// 한글에서 가능한 종성숫자가 28개이거든요. 유니코드 체계가...
유니코드 = 유니코드 상수 + 초성*중성갯수*종성갯수 + 중성*종성갯수 + 종성;
이렇게 나옵니다. 초성이나 중성의 코드번호는 없을 수 없겠지만, 종성은 없을 수도 있는데, 종성이 없다면 0, 종성이 'ㄱ' 이라면 1 이런 식이거든요. 따라서 종성갯수인 28로 나누어 떨어진다면 그건 종성이 없다...라고 판단하는 거죠. 물론 그 전에 유니코드 상수 뺐던거 보셨죠? (이 경우엔 44032가 유니코드 상수였습니다.)
아.. 그렇군요.. 감사합니다..
그런데 유니코드로 초성, 중성, 종성이 무엇인지 알아 낼수 있나요??
네 가능합니다. 유니코드 체계가 규칙성을 가지고 있기 때문이죠.
자바스크립트로 코드값 : 글자를 찍어보시면 쉽게 아실 수 있을 겁니다.
하늘아부지 // 오랜만이예요~ 새로 템플릿 엔진을 공개하셨더군요. 방금 보고 오는 길입니다. 아직 보지는 못하고 릴리즈 소식만 알고 있는.... -_-;;
하핫... 관심가져주셔서 감사합니당. ^^