본문 바로가기

개발/자바스크립트

자바스크립트 한글 글자 길이 2로 처리하기

자바스크립트로 글자수를 체크해야 하는 경우가 종종 있습니다.


그런데 숫자, 영문, 특수문자인 경우length를 이용해서 체크하면 1개당 1로 체크 되지만,


한글"가나다" 이런 형태면 length가 3으로 나타나게 됩니다.


단순하게 한글의 length는 2로 하고 그 외 문자 숫자는 length를 1로 하면


적절한 길이 체크가 될 것이라 생각됩니다.


그럼 소스를 보겠습니다.



var str = "한글";

var charLength = 0;

var ch1 = "";


for(var i = 0; i < str.length; i++) {

ch1 = str.charAt(i);

if(escape(ch1).length > 4) {

charLength += 2;

} else {

charLength += 1;

}

}


alert(str + " 문자열 총 길이는 :" + charLength);


영문은 그대로 출력되나

특수문자 숫자는 다른형태로 바뀌어져 보여집니다.(:는 %3A)

한글은 "한"은 %uD55C 형태로 바뀌게 됩니다.


영문 숫자 특수문자는 escape(ch1).length 의 길이가 보통 3개 이하로 나타나므로,

4보다 클 경우 한글이라 여기고 (한글은 6개로 나옵니다.) 한글은 길이 2개로 처리하였습니다.


참고.

chartAt는 몇번째에 해당되는 글자를 가져오는 것이고 한, 글 이 될 것이고,

escape는 모든 컴퓨터에서 읽을 수 있는 값으로 변환해서 가져오는 것입니다.(인코딩)


번외

인코딩된것을 디코딩 하려면

unexcape를 사용하면 됩니다. 즉, unexcape("%3A") 의 결과는 : 가 됩니다.