`
lionheart
  • 浏览: 91232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用JavaScript实现截取指定长度的HTML字符串

阅读更多
       /*   
        * 调整截取的字符串的位置。因为在截取一个字符串后可能存在两种情况:
        * (1)字符串末位正好处于一个标签的属性之中的某个位置。如:<a id="xxx"  href="xxx"
></a>中红色标注的位置。
        * (2)字符串末位处于一个标签内容之中的某个位置。如:<a
>here
</a> 中红色标注的位置。
        *  对于这两种情况,第二种情况可以无需特殊处理,但是第一种情况的话得将整个标签删除或者将其属性补全。删除的话
        *  将字符串的末尾位置前移至标签开始之前;而补全则是将末尾位置后移至次标签的'>'处。这里采用的是删除的方法。
        */
	function adjustByTagPostion(str){
		var left_brace_index = str.lastIndexOf('<');
		var right_brace_index = str.lastIndexOf('>');
		// 为true的话则表示字符串处于第一种情况,需要进行删除操作。
               var inTagDefinition = left_brace_index > right_brace_index;
		return inTagDefinition ? str.substring(0,left_brace_index) : str;
	}

	// 将未闭合的标签按序闭合。
	function modifyDisplayString(original, addTags){
		var tagLenth = addTags.length;
		for(var i = tagLenth-1; i >= 0; i--){
			original += '</' + addTags[i] + '>';
		}
		return original;
	}

	// 
	function splitString(original, length){
               // 此数组用于保存那些未闭合的标签。
		var non_match_tag = []
               // 如果大于字符串的总长度,返回整个字符串;否则返回指定长度的子串
 		var to = length >= original.length ? original.length : length;
		var substring = original.substring(0,to);

               // 调整字符串。
		adjustedSubString = adjustByTagPostion(substring);
		var tag_pattern = /<\s*(\w+\b)(?:[^>]*[^\/])?>|<(\/\w+)>/ig

		adjustedSubString.replace(tag_pattern, function(match,$1,$2){
			var value = $1 == '' ? ($2 == '' ? '' : $2) : $1;
			if(value.charAt(0) == '/'){
                               // 为真表示这个标签是前面最后一个为闭合标签的闭合,因此,将此标签从数组中删除。
 				if(non_match_tag.length > 0 && non_match_tag[non_match_tag.length-1] == value.substring(1)){
					non_match_tag.pop();
				}
			}else{
                               // 新的未闭合的标签,将其添加到数组中。
				non_match_tag.push(value);
			}
               });

		return modifyDisplayString(adjustedSubString, non_match_tag);
	}

 

 

分享到:
评论

相关推荐

    JavaScript截取指定长度字符串点击可以展开全部代码

    那么有可能会影响网页的布局或者美观度,这个时候就要根据情况适量截取一定的字符串,以适应布局,不过当点击一个按钮的时候依然可以展开全部的内容,下面就通过一个实例详细介绍一下如何实现此效果,代码示例如下: ...

    jQuery截取指定长度字符串的实现原理及代码

    截取指定长度字符串操作在网站建设中大量使用,尤其是在新闻列表这种类型的操作中大量应用。 下面就是一个截取字符串代码实例: &lt;!DOCTYPE HTML&gt; &lt;html&gt; &lt;head&gt; &lt;meta ...

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

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

    JavaScript字符串对象substr方法入门实例(用于截取字符串)

    substr 方法用于根据开始位置和长度截取字符串并返回截取部分字符串。其语法如下: 代码如下: str_object.substr(start, length) 参数说明: 参数 说明 str_object 要操作的字符串(对象) start 必需。开始...

    用javascript实现截取字符串包含中文处理的函数

    一直不知道js可以截取中文字符,呵呵,原理用正则表达式,匹配中文的长度,中文算两个,因为算一个,是个好东西,推荐大家收藏

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    从中截取字符串.asp 从中截取字符串 切分字符串.asp 切分字符串 删除字符串前后导空格.asp 删除字符串前导空格.asp 删除字符串后导空格.asp 反向截取字符串.asp ...

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

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

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 5、原生JavaScript转义html标签 6、原生JavaScript还原html标签 7、原生JavaScript时间...

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

    做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑。 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字符...

    js获取字符串最后一位方法汇总

    请注意,JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串 方法二:运用String对象下的substr方法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 ...

    Javascript字符串常用方法详解

    js里的字符串类似于数组,都是一个一个字符拼凑在一起组成的,因此可以用length属性取得字符串的长度 var str = “hello” str.length; // 5 字符串常用的一些方法 1. charAt() str.charAt(n) =&gt; 返回字符串的...

    javascriptString对象

    String对象的使用方法,输入一个字符串,然后转换成大小写,根据给定字符串长度截取字符串

    Web报表工具FineReport的JS开发之字符串

    在报表开发过程中,有些需求可能无法通过...考虑到JS脚本开发的使用较多,这里先先简单介绍如何用JS对字符串进行操作,比如如何判断字符串是否为空,字符串的长度,替换,查找,截取,或者将字符串转换为其他类型等。

    js常用100例方法 正则 移动设备判断 金额转换等 页面resize 超实用

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 11、原生JavaScript加入收藏夹 15、原生JavaScript返回脚本内容 17、原生JavaScript动态...

    JavaScript程序设计课件:String对象.pptx

    JavaScript程序设计 String对象 6.4.1 String对象 1、创建String对象 ...截取从start位置开始到length长度的子字符串 toLowerCase() 方法 获取字符串的小写形式 toUpperCase() 方法 获取字符串的大写形式

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

    截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一个合法的时间格式 检测URL地址有效性 检测...

    Javascript中字符串和数字的操作方法整理

    1、length – 返回字符串的长度 ‘abcd'.length; //4 2、Math.ceil(num) – 向上取整,不管小数点后面是多少,哪怕.00001,也会向上进一位。 Math.ceil(25.9); //26 Math.ceil(25.5); //26 Math.ceil(25.1); //26...

    jquery 截取长文本和css

    方法一:用CSS截断字符串:IE,FireFox,Opera ,Safari都兼容 .subLongText{ width:150px; height:24px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-overflow: ellipsis;/* IE/Safari */ ...

Global site tag (gtag.js) - Google Analytics