技术 · 2013 年 12 月 20 日

JS和JQuery截取字符串(一句话)长度,中英文数字等判断

需要JQuery ,下面的代码在外部js文件中。

<script type="text/javascript">
$(document).ready(function(){
	var arrcomments = $(".wenben"); //提取循环显示的多个字块
	arrcomments.each(function(){	//每个字块函数
		var len = 0;
		var s = $(this).text();		//获取字块字符串
		var l=$(this).text().length;	//获取字块字符串长度
		var n=90; //设置字符长度为32个
		for (var i = 0; i < l; i++) { 
			if (s[i].match(/[^\x00-\xff]/ig) != null) //判断半角全角中英文(可能有漏的) 
				len += 2; 	//是中文记2个字符
			else 
				len += 1; 	//半角数字英文记1个字符
			if (len > n) break;	//如果循环后字符长度大于设定(n)的长度,结束循环,此时的循环次数i即是第N个文字。
		} 
		if(l > i){	//字块字符串长度大于限定的字数
			$(this).attr("title",s); //将文本所有内容用标签的title属性提示文本全部内容
			s=$(this).text(s.substring(0,i)+"...");	//截取后的文字后面加...输出
		}
	});
});
</script>

纯Js,在网页内部的代码

<script type="text/javascript">
function test() {
	s =	document.getElementById("wenben").innerHTML;	//获得字符串文本
	l = s.length;	//获得字符串长度
	len = 0;	
	n = 30;			//设定限定的字符长度
	for (var i=0; i<l; i++) {	//
		if (s[i].match(/[^\x00-\xff]/ig) != null) len +=2;
		 else len +=1;
		 if (len > n) break;
	}
	if (l > i) {
		s = s.substring(0,i)+"...";
	}
	document.write(s);
}
</script>
<div id="wenben">这里是一段测试文字的长度,this is test text。</div>
<button onClick="test()">点这里截取</button>