zoukankan      html  css  js  c++  java
  • JavaScript截取中英文字符串

    有时在显示某段文字的时候,可能会太长,影响我们页面的显示效果。如果仅是英文,那么我们可以用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);
  • 相关阅读:
    Python的条件判断和循环
    Python分支和循环结构的练习
    Python的变量和运算符
    Python简介
    Git的使用及网络编程多线程多进程
    函数面向对象编程及文件的读取
    函数模块字符串列表
    python变量运算符分支结构循环结构及例题
    集合
    三级菜单
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4104318.html
Copyright © 2011-2022 走看看