한글 문자열 자르기 입니다. ^^ > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

한글 문자열 자르기 입니다. ^^ 정보

기타 한글 문자열 자르기 입니다. ^^

본문

자바스크립트에서는 2바이트 문자를 한글자로 처리하기 때문에 바이트 단위로 잘라야 하거나 검사할때 문제가 많습니다.
그래서 바이트 단위로 길이를 검사하고 자르는 메소드를 추가해봤습니다.
서핑중에 sms 보내는 폼이 나오면... 혹시나하고 소스를 열어보곤 하는데.. ㅇ_ㅇ(힉..)
80바이트가 넘는지 검사하는걸 상당히 복잡하게 코딩해논게 보이더군요..
코드 나갑니다.
<script>
        /**
        * string String::cut(int len)
        * 글자를 앞에서부터 원하는 바이트만큼 잘라 리턴합니다.
        * 한글의 경우 2바이트로 계산하며, 글자 중간에서 잘리지 않습니다.
        */
        String.prototype.cut = function(len) {
                var str = this;
                var l = 0;
                for (var i=0; i<str.length; i++) {
                        l += (str.charCodeAt(i) > 128) ? 2 : 1;
                        if (l > len) return str.substring(0,i) + "...";
                }
                return str;
        }
        /**
        * bool String::bytes(void)
        * 해당스트링의 바이트단위 길이를 리턴합니다. (기존의 length 속성은 2바이트 문자를 한글자로 간주합니다)
        */
        String.prototype.bytes = function() {
                var str = this;
                var l = 0;
                for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
                return l;
        }
        aaa = "동a해b물c과 백두산이";
        alert(aaa.cut(15));
        // 또는
        bbb = "너무긴내용너무긴내용너무긴내용";
    alert("length: " + bbb.length + "nbytes(): " + bbb.bytes());
    //응용
        if (bbb.bytes() > 20) {
                alert("내용이 너무 깁니다");
        } else {
                // 처리
        }
       
</script><div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]</div>
추천
0

댓글 0개

전체 5,397
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT