/** * @param begin 截取开始的索引 * @param num 截取的长度 */ //截取字符串(包括中文) function SetString(str, len) { var strlen = 0; var s = ""; for (var i = 0; i < str.length; i++) { var m = str.charAt(i).match(/[^x00-x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数 if (m!=null && m.length>0) { strlen += 2; } else { strlen++; } s += str.charAt(i); if (strlen >= len) { return s; } } return s; } //得到字符总数 function getChars(str) { var i = 0; var c = 0.0; var unicode = 0; var len = 0; if (str == null || str == "") { return 0; } len = str.length; for(i = 0; i < len; i++) { unicode = str.charCodeAt(i); if (unicode < 127) { //判断是单字符还是双字符 c += 1; } else { //chinese c += 2; } } return c; } function sb_strlen(str) { return getChars(str); } //截取字符 function sb_substr(str, startp, endp) { var i=0; c = 0; unicode=0; rstr = ''; var len = str.length; var sblen = sb_strlen(str); if (startp < 0) { startp = sblen + startp; } if (endp < 1) { endp = sblen + endp;// - ((str.charCodeAt(len-1) < 127) ? 1 : 2); } // 寻找起点 for(i = 0; i < len; i++) { if (c >= startp) { break; } var unicode = str.charCodeAt(i); if (unicode < 127) { c += 1; } else { c += 2; } } // 开始取 for(i = i; i < len; i++) { var unicode = str.charCodeAt(i); if (unicode < 127) { c += 1; } else { c += 2; } rstr += str.charAt(i); if (c >= endp) { break; } } return rstr; } function mb_strlen(str) { var len = 0; for(var i = 0; i < str.length; i++) { len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1; } return len; }