길이(byte)에 따라 문자열 자르기(javascript)

function cutStr(str,limit){
var tmpStr = str;
var byte_count = 0;
var len = str.length;
var dot = “”;

for(i=0; i byte_count += chr_byte(str.charAt(i));
if(byte_count == limit-1){
if(chr_byte(str.charAt(i+1)) == 2){
tmpStr = str.substring(0,i+1);
dot = “…”;
}else {
if(i+2 != len) dot = “…”;
tmpStr = str.substring(0,i+2);
}
break;
}else if(byte_count == limit){
if(i+1 != len) dot = “…”;
tmpStr = str.substring(0,i+1);
break;
}
}
document.writeln(tmpStr+dot);
return true;
}
function chr_byte(chr){
if(escape(chr).length > 4)
return 2;
else
return 1;
}

실제로 쓰이는 함수는 cutStr(str,limit)입니다.
본문에 와 같이 삽입해주시면 됩니다. 예제는 30byte로 자른 거구요.
바이트 단위로 했을 때 2byte문자(한글같은…)가 잘리게 된다면 글자 잘림을 방지하기 위해 출력 길이를 1byte줄여서 출력합니다. chr_byte 함수는 입력된 글자가 1byte인지 2byte인지 체크하는 기능을 합니다

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다