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);
时间: 2024-10-10 04:34:14

JavaScript截取中英文字符串的相关文章

js截取中英文字符串、标点符号无乱码示例解读

<script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = ""; var strLength = str.replace(chineseRegex,"**").length; for(var i = 0;i < st

JavaScript截取超过长度的字符串(中英文都适用)

/** * js截取字符串,中英文都能用 * @param str:需要截取的字符串 * @param len: 需要截取的长度 */ function cutstr(str, len) { var str_length = 0; var str_len = str.length; str_cut = new String();for (var i = 0; i < str_len; i++) { a = str.charAt(i); str_length++; if (escape(a).le

JavaScript中英文 字符串截取

/** * 中英文字符串截取 * @param str 要截取的字符串 * @param len 要截取的长度 * @param hasDot 是否在字符串末尾增加'...' * @returns {string} * */ function mySubString (str, len, hasDot){ var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = &q

Javascript 中英文字符串截取

1 /** 2 * 中英文字符串截取 3 * @param str 要截取的字符串 4 * @param len 要截取的长度 5 * @param hasDot 是否在字符串末尾增加'...' 6 * @returns {string} 7 * 8 */ 9 10 function mySubString (str, len, hasDot){ 11 var newLength = 0; 12 var newStr = ""; 13 var chineseRegex = /[^\x0

中英文字符串截取类

<?php /** * description:中英文字符串截取 * @author :SunsCheung * @date:2015-09-24 */ class Helper{ public static function truncate_utf8_string($string, $length, $etc = '...') { $result = ''; $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES,

utf-8 中英文字符串截取

http://www.nowamagic.net/php/php_SubMixedString.php http://waiting.iteye.com/blog/581888 function get_word($string, $length, $dot = '..',$charset='gbk') {          if(strlen($string) <= $length) {         return $string;     }     $string = str_repla

php截取中文字符串,英文字符串,中英文字符串长度的方法

今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = ‘Hello,China!’;echo strlen($enStr); // 输出:12 而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8.utf-8能兼容更多的字符,所以受到很多站长的喜爱.gbk与u

javascript截取字符串的最后几个字符

在JavaScript中截取字符串一般是使用内置的substring()方法和substr()方法,这两个方法功能都很强大,也都能实现截取字符串中的最后几个字符. substring()方法 JavaScript中的String对象提供了一个substring(int from, int to)方法用于截取字符串中位置为from到to-1位置的字符. 因为字符串的字符位置是从0开始的,而substring(int from, int to)方法是前闭后开的,即[from, to),可以理解为[f

php 中英文字符串截取,字符串长度

在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. ? 1 2