码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript截取中英文字符串

时间:2014-11-17 21:18:11      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   使用   java   for   on   art   cti   

有时在显示某段文字的时候,可能会太长,影响我们页面的显示效果。如果仅是英文,那么我们可以用String.substring(start, end)函数就已经够用了。但是通常我们都会遇到既有英文,又有汉字的情况。而汉字是占用2个字节的,如果用String.substring(start, end)截取字符串的话,会发现汉字截取后比英文截取后个数虽然相同,但是长度还是长出去不少(具体要视字符个数来决定)。繁峙县粮食局

下面是一个实现这个功能的函数:

<script language="javascript" type="text/javascript">  
var str = "欢迎访问简明现代魔法";
document.write( cutstr(str, 8) );

//js截取字符串,中英文都能用  
//如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。  
//字符串,长度  
  
/** 
 * js截取字符串,中英文都能用 
 * @param str:需要截取的字符串 
 * @param len: 需要截取的长度 
 */  
function cutstr(str,len)  
{  
	var str_length = 0;  
	var str_len = 0;  
	str_cut = new String();  
	str_len = str.length;  
	for(var i = 0; i < str_len; i++)  
	{  
		a = str.charAt(i);  
        str_length++;  
        if(escape(a).length > 4)  
        {  
         	//中文字符的长度经编码之后大于4  
         	str_length++;  
   		}  
    	str_cut = str_cut.concat(a);  
    	if(str_length>=len)  
     	{  
   			str_cut = str_cut.concat("...");  
         	return str_cut;  
      	}  
	}  
    //如果给定字符串小于指定长度,则返回源字符串;  
    if(str_length < len){  
     	return  str;  
	}  
}  
</script>  

也可以使用自定义JavaScript原生方法来实现。

<script language="javascript" type="text/javascript">  

//计算字符串长度
String.prototype.strLen = function() {
	var len = 0;
	for (var i = 0; i < this.length; i++) {
		if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) len += 2; else len ++;
	}
	return len;
}

//将字符串拆成字符,并存到数组中
String.prototype.strToChars = function(){
	var chars = new Array();
	for (var i = 0; i < this.length; i++){
		chars[i] = [this.substr(i, 1), this.isCHS(i)];
	}
	String.prototype.charsArray = chars;
	return chars;
}
 
//判断某个字符是否是汉字
String.prototype.isCHS = function(i){
	if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) 
		return true;
	else
		return false;
}

//截取字符串(从start字节到end字节)
String.prototype.subCHString = function(start, end){
	var len = 0;
	var str = "";
	this.strToChars();
	for (var i = 0; i < this.length; i++) {
		if(this.charsArray[i][1])
			len += 2;
		else
    		len++;
		if (end < len)
     		return str;
		else if (start < len)
			str += this.charsArray[i][0];
	}
	return str;
}

//截取字符串(从start字节截取length个字节)
String.prototype.subCHStr = function(start, length){
	return this.subCHString(start, start + length);
}

var str = "欢迎abc访问简明现代魔法";

var str1 = str.subCHStr(0, 9); 
//var str2 = str.subCHStr(2, 4); 
//alert(str1 + " == " + str2);

document.write( str1 );
</script>  

具体使用很简单,跟String.subString(start, end)一样使用就可。比如:

var str = "欢迎abc访问简明现代魔法"; 
var str1 = str.subCHStr(2, 2); 
var str2 = str.subCHString(2, 4); 
alert(str1 + " == " + str2);

JavaScript截取中英文字符串

标签:http   io   ar   使用   java   for   on   art   cti   

原文地址:http://www.cnblogs.com/xiaoyang002/p/4104318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!