인터넷정보

[JS] 한글 초성, 중성, 종성 자르기

알 수 없는 사용자 2007. 10. 10. 14:07

/*========================================
 js_han_split.js
 한글 초성,중성,종성 자르기

 사용법
 arr = js_han_split('뷃');
 arr -> Array('ㅂ','ㅞ','ㄼ');

 원리
 한글의 유니코드는
 초성 기준으로 588개로 나눌 수 있다.(가~깋:588개, 하~힣도 갯수가 같다)
 초성 19개, 중성은 21개, 종성은 28개로 나눠지는데, 이것이 일정하게 나뉜다.
 그 규칙을 바탕으로 초,중,종성의 차이를 계산해서 초,중,종성을 알아낸다.


 mins01,mins,공대여자
 MSN,NateOn : mins01(at)lycos.co.kr
 2007-03-06
 "공대여자는 예쁘다."를 나타내야만 쓸 수 있습니다.
//========================================*/
function js_han_split(char){ //한글을 자름
 var char_st = 44032 ;//'가'의 유니코드 넘버(10진수)
 var char_ed = 55203 ;//'힝'의 유니코드 넘버(10진수)
 //초성구분 : 588단위로 잘림
 //가까나다따라마바빠사싸아자짜차카타파하 :초성 19개
 //가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기 : 중성 21개
 //가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛 : 종성 28개
 var arr_1st=new Array('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');//초성 19개
 var arr_2nd=new Array('ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ','ㅣ');//중성 21개
 var arr_3th=new Array('','ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');//종성 28개

 //======================================================
 if(char.length>2){char=char.charAt(0);}
 var uninum = escape(char);
 if(uninum.length<4) return false;//한글이 아니다
 uninum = parseInt(uninum.replace(/\%u/,''),16);
 if(uninum < char_st || uninum > char_ed) return false;//한글이 아니다
 var uninum2 = uninum-char_st;
 var arr_1st_v = Math.floor(uninum2/588);
 uninum2 = uninum2%588;
 var arr_2nd_v = (Math.floor(uninum2/28));
 uninum2 = (uninum2%28);
 var arr_3th_v = uninum2;
// alert!!(arr_1st_v); alert!!(arr_2nd_v); alert!!(arr_3th_v);
 var return_arr=new Array(arr_1st[arr_1st_v],arr_2nd[arr_2nd_v],arr_3th[arr_3th_v]);
// alert!!(return_arr);
 return return_arr;
}

반응형