/** * 返回子符串字节数,ascii在0-255之间,一个字符一个字节,在0-255之外则两个字节 * param str 要计算字节数的字符串 * return 字符串字节数 */ function blength(str) { return str.replace(/([^\x00-\xFF])/g, "**").length; }; /* * 按字节长度截取字符串 * param str 要截取的字符串 * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节 * return 截取后的字符串 */ function cutString(str) { var result = ''; var strlen = str.length; //字符串长度 var chrlen = blength(str); //字符串字节长度 if(chrlen <= L){ return str; } for(var i=0,j=0;i<strlen;i++){ var chr = str.charAt(i); if(/[\x00-\xff]/.test(chr)){ //test()方法用于测试字符串是否匹配某种模式 j++; //ascii码为0-255之间,一个字符长度为一个字节 }else{ j+=2; //ascii码为0-255之外,一个字符长度为两个字节,当然严格说来这是不正确的,但对于本需求来说基本能满足要求 } if(j < L){ result+=chr; // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后 }else{ return result + "......"; // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回 } } }
JavaScript通过字节长度截取字符串
最新推荐文章于 2023-05-18 09:21:21 发布