自动将双字节字符长度计算为2,取字符时也按照单字节的长度取,如2即取1个汉字或两个字母,1取一个汉字或字母。 // 得到字符串的真实长度(双字节换算为两个单字节) function getStrActualLen(sChars) { return sChars.replace(/[^\x00-\xff]/g,"xx").length; } // 截取固定长度子字符串 sSource为字符串iLen为长度 function getInterceptedStr(sSource, iLen) { if(sSource.replace(/[^\x00-\xff]/g,"xx").length <= iLen) { return sSource; } var str = ""; var l = 0; var schar; for(var i=0; schar=sSource.charAt(i); i++) { str += schar; l += (schar.match(/[^\x00-\xff]/) != null ? 2 : 1); if(l >= iLen) { break; } } return str; } var str1="这是一个字符串截取的函数,this is a test!"; //alert(getStrActualLen(str1)); alert(getInterceptedStr(str1,25)); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]