본문 바로가기

Programming/Web

[Javascript] String byte check. 스트링 바이트 체크 (한글).

자바스크립트에서 스트링 길이를 구할 때, 한글 길이와 영문길이를 같이 계산하는 경우가 대부분이다.


하지만, 한글의 경우 2byte로 계산해야 정상적인 계산이라고 볼 수 있는데,


구글링 중 어느 블로그를 통해 계산법에 대해 알게 되었다.


현재 string의 byte 수를 구하는 function 이다.


String.prototype.getBytes = function() {
	var contents = this;
	var str_character;
	var int_char_count;
	var int_contents_length;

	int_char_count = 0;
	int_contents_length = contents.length;

	for (k = 0; k < int_contents_length; k++) {
		str_character = contents.charAt(k);
		if (escape(str_character).length > 4)
			int_char_count += 2;
		else
			int_char_count++;
	}
	return int_char_count;
}


그리고 조금더 응용해서 


입력된 숫자 만큼의 길이의 스트링을 리턴해준다.


String.prototype.getStringFromByteLength = function( byteLength ) {
	var contents = this;
	var str_character;
	var int_char_count;
	var int_contents_length;
	
	var returnValue = "";
	
	int_char_count = 0;
	int_contents_length = contents.length;
	
	for (k = 0; k < int_contents_length; k++) {
		str_character = contents.charAt(k);
		if (escape(str_character).length > 4)
			int_char_count += 2;
		else
			int_char_count++;
		
		if ( int_char_count > byteLength ) {
			break;
		}
		returnValue += str_character;
	}
	return returnValue;
}



위의 function은 출처가 어딘지 모르겠네요...


혹시 직접 만드신분이 보신다면...댓글 부탁드려요~