`

js中按字节截取字符串

    博客分类:
  • js
阅读更多
功能:在网页中显示过长的字符串,截取指定长度,结尾添加省略号。

例如:
testStr = "测试1字符串";
autoAddEllipsis(testStr, 1); // "测..."
autoAddEllipsis(testStr, 2); // "测..."
autoAddEllipsis(testStr, 3); // "测..."
autoAddEllipsis(testStr, 4); // "测试..."
autoAddEllipsis(testStr, 5); // "测试1..."
autoAddEllipsis(testStr, 6); // "测试1..."
autoAddEllipsis(testStr, 7); // "测试1字..."

代码如下,其中全角半角判断部分isFull()的逻辑偷懒了,有特殊符号需求的可以自己定制。
/*
 * 处理过长的字符串,截取并添加省略号
 * 注:半角长度为1,全角长度为2
 * 
 * pStr:字符串
 * pLen:截取长度
 * 
 * return: 截取后的字符串
 */
function autoAddEllipsis(pStr, pLen) {

	var _ret = cutString(pStr, pLen);
	var _cutFlag = _ret.cutflag;
	var _cutStringn = _ret.cutstring;

	if ("1" == _cutFlag) {
		return _cutStringn + "...";
	} else {
		return _cutStringn;
	}
}

/*
 * 取得指定长度的字符串
 * 注:半角长度为1,全角长度为2
 * 
 * pStr:字符串
 * pLen:截取长度
 * 
 * return: 截取后的字符串
 */
function cutString(pStr, pLen) {

	// 原字符串长度
	var _strLen = pStr.length;

	var _tmpCode;

	var _cutString;

	// 默认情况下,返回的字符串是原字符串的一部分
	var _cutFlag = "1";

	var _lenCount = 0;

	var _ret = false;

	if (_strLen <= pLen/2) {
		_cutString = pStr;
		_ret = true;
	}

	if (!_ret) {
		for (var i = 0; i < _strLen ; i++ ) {
			if (isFull(pStr.charAt(i))) {
				_lenCount += 2;
			} else {
				_lenCount += 1;
			}

			if (_lenCount > pLen) {
				_cutString = pStr.substring(0, i);
				_ret = true;
				break;
			} else if (_lenCount == pLen) {
				_cutString = pStr.substring(0, i + 1);
				_ret = true;
				break;
			}
		}
	}
	
	if (!_ret) {
		_cutString = pStr;
		_ret = true;
	}

	if (_cutString.length == _strLen) {
		_cutFlag = "0";
	}

	return {"cutstring":_cutString, "cutflag":_cutFlag};
}

/*
 * 判断是否为全角
 * 
 * pChar:长度为1的字符串
 * return: true:全角
 * 			false:半角
 */
function isFull (pChar) {
	if ((pChar.charCodeAt(0) > 128)) {
		return true;
	} else {
		return false;
	}
}
0
0
分享到:
评论

相关推荐

    C#(.net)中按字节数截取字符串最后出现乱码问题的解决

    最近需要用到按字节数截取字符串。在网上找了很多方法。 Encoding.Default.GetString采用的Default Encoding.UTF8.GetBytes采用的是utf-8编码。这样当然是乱码。尤其出现中文时候。 对这类数据处理当然要用统一的...

    标题过长使用javascript按字节截取字符串

    在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,下面为大家介绍下javascript如何按字节截取字符串

    JS按字节截取字符长度实例

    * * 处理过长的字符串,截取并添加省略号 * 注:半角长度为1,全角长度为2 * * pStr:字符串 * pLen:截取长度 * * return: 截取后的字符串 * 代码如下:function autoAddEllipsis(pStr, pLen) { var _ret = ...

    Js自动截取字符串长度,添加省略号(……)的实现方法

    JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“…”该方法用于处理字符串显示固定长度,超长部分用“…”代替: /**参数说明: * 根据长度截取...

    C#实现根据字节数截取字符串并加上省略号的方法

    本文实例讲述了C#按字节数截取字符串并在后面加上省略号…的方法,这是一个自定义的C#函数,函数的使用说明如下: 原始字符串 提取前endIdex个字节 &lt;returns&gt;&lt;/returns&gt; 函数代码如下: public static string ...

    中文字符串截取的js函数代码

    为了解决这个问题昨天写了根据字节数截取字符串的函数。具体使用很简单,跟String.subString(start, end)一样使用就可。比如:var str = “诶必塞第衣爱抚即”; var str1 = str.subCHStr(2, 2); var str2 = str....

    JS判断字符串字节数并截取长度的方法

    主要介绍了JS判断字符串字节数并截取长度的方法,涉及JavaScript针对页面元素与字符串的动态操作技巧,需要的朋友可以参考下

    js截取固定长度的中英文字符的简单实例

    js虽然提供了计算字符串所占字节数的函数,但是却不能正确计算汉字所占的字节数,... 代码如下://js截取字符串,中英文都能用//如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。function cutstr(st

    JS字符串长度判断,超出进行自动截取的实例(支持中文)

    今天一个小弟问我的问题,在文本框中输入字符,如果超出指定长度,就把它截取,要求中文等于两个字符的长度,我找一下资料,把这个功能实现了, 下面是JS代码: &lt;html&gt; [removed][removed] &lt;body&gt; &lt...

    可以保证单词完整性的PHP英文字符串截取代码分享

    直接上代码: /** * 完整词的截取 * * @param $str * @param $start * @param $length * * @return string ... public static function usubstr($str, $start, $... /* 接着判断头尾各6字节是否完整(不残缺) */

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...

    JavaScript完全自学宝典 源代码

    10.6.html 字符串中查找满足表达式的字符。 10.7.html 使用match()方法匹配正则表达式字符串。 10.8.html 匹配数字。 10.9.html 匹配日期格式。 10.10.html 匹配时间格式。 10.11.html 匹配...

    JQuery获取文本框中字符长度的代码

    趁我写例子这点时间有两个人回答了 呵呵 刚才试验过了 看下例子吧 JS 方法: 代码如下: [removed] // 得到字符串的真实长度(双字节换算为两个单字节) function getStrActualLen(sChars) { //sChars.replace(/[^\x...

    js和php配合的rsa openssl 加密解密函数

    因为密钥长度影响可加密明文的最大长度,所以按文字截取然后加密并base64编码,就这样将每次加密并base64编码候的字符串连接起来,解密的时候每次取出固定字节数(加密任何长度明文都产生固定长度的密文),进行解密...

    JavaScript中常用的正则表达式日常整理(全)

    //校验是否全由数字组成 ...评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:&lt; (S*?)[^&gt;]*&gt;.*?|&lt; .

    jQuery textarea文本框输入文字字数限制提示代码.zip

    //得到字符串的字节长度 String.prototype.len = function(){ return this.replace(/[^\x00-\xff]/g, "xx").length; }; /* * 处理过长的字符串,截取并添加省略号 * 注:半角长度为1,全角长度为2 * ...

    javascript入门笔记

    Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...

Global site tag (gtag.js) - Google Analytics