js substr支持中文截取函数代码(中文是双字节)
2013-04-17 00:00
666 查看
<script language="JavaScript"> //得到字符总数 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 getShortFileName(filename) { short_filename = filename; if (sb_strlen(short_filename) > 61) { short_filename = sb_substr(short_filename, 0, 36) + ' ... ' + sb_substr(short_filename, -20); } return short_filename; } var chara = 'ni你2好1啊!' js_self = chara.substr(4); test = sb_substr(chara,4); alert("js_self:"+js_self+"ext:"+test); </script>
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; }
function CutStrLength(str,Ilength)
{
var tmp=0;
var len=0;
var okLen=0
for(var i=0;i255)
tmp+=2
else
len+=1
okLen+=1
if(tmp+len==Ilength)
{
return (str.substring(0,okLen));
break;
}
if(tmp+len>Ilength)
{
return (str.substring(0,okLen-1)+"");
break;
}
}
}
function checkFieldLength(fieldName,fieldDesc,fieldLength)
{
var str=document.getElementById(fieldName).value;
var theLen=0;
var teststr='';
for(i=0;i255)
theLen=theLen+2;
else
theLen=theLen+1;
}
document.getElementById('showMsg').innerText=theLen;
if(theLen>fieldLength)
{
document.getElementById('showMsg').innerText=fieldDesc;
//alert(fieldDesc+" 的字段长度超过规定长度!");
//document.getElementById(fieldName).focus();
document.getElementById(fieldName).value=CutStrLength(str,fieldLength);
return false;
}
else
{
return true;
}
}
//-->
已经输入:
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
相关文章推荐
- 中文字符串截取的js函数代码
- js:单字节(英文一个,中文二个)长度/截取(substr)实现
- 中文字符串截取的js函数代码
- js字符串截取函数slice()、substring()、substr()
- 几个支持中文的PHP字符串截取函数
- js字符串截取函数slice()、substring()、substr()
- IE6和IE8下对js字符串截取函数substr兼容性问题
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
- js字符串截取函数slice()、substring()、substr()以及split()、John() 、indexOf()的用法
- JS~字符串长度判断,超出进行自动截取(支持中文)
- js 字符串截取函数slice()、substring()、substr()
- js字符串截取函数slice()、substring()、substr()
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- js--小demo--字符串长度判断,超出进行自动截取(支持中文)
- js字符串截取函数slice()、substring()、substr()
- 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
- php字符串截取函数,支持中文截取
- php 字符串操作函数substr()截取中文子串乱码问题