代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
C#实现的html内容截取
作者:
/ 发布于
2024/7/23
/
271
/// <summary> /// 按文本内容长度截取HTML字符串(支持截取带HTML代码样式的字符串) /// </summary> /// <param name="html">将要截取的字符串参数</param> /// <param name="len">截取的字节长度</param> /// <param name="endString">字符串末尾补上的字符串</param> /// <returns>返回截取后的字符串</returns> public static string HTMLSubstring(string html, int len, string endString) { if (string.IsNullOrEmpty(html) || html.Length <= len) return html; MatchCollection mcentiry, mchtmlTag; ArrayList inputHTMLTag = new ArrayList(); string r = "",tmpValue; int rWordCount = 0, wordNum = 0, i = 0; Regex rxSingle = new Regex("^<(br|hr|img|input|param|meta|link)", RegexOptions.Compiled | RegexOptions.IgnoreCase)//是否单标签正则 , rxEndTag = new Regex("</[^>]+>", RegexOptions.Compiled)//是否结束标签正则 , rxTagName = new Regex("<([a-z]+)[^>]*>", RegexOptions.Compiled | RegexOptions.IgnoreCase)//获取标签名正则 , rxHtmlTag = new Regex("<[^>]+>", RegexOptions.Compiled)//html标签正则 , rxEntity = new Regex("&[a-z]{1,9};", RegexOptions.Compiled | RegexOptions.IgnoreCase)//实体正则 , rxEntityReverse = new Regex("§", RegexOptions.Compiled)//反向替换实体正则 ; html = html.Replace("§", "§");//替换字符§为他的实体“§”,以便进行下一步替换 mcentiry = rxEntity.Matches(html);//收集实体对象到匹配数组中 html = rxEntity.Replace(html, "§");//替换实体为特殊字符§,这样好控制一个实体占用一个字符 mchtmlTag = rxHtmlTag.Matches(html);//收集html标签到匹配数组中 html = rxHtmlTag.Replace(html, "__HTMLTag__");//替换为特殊标签 string []arrWord = html.Split(new string[] { "__HTMLTag__" }, StringSplitOptions.None);//通过特殊标签进行拆分 wordNum = arrWord.Length; //获取指定内容长度及HTML标签 for (; i < wordNum; i++) { if (rWordCount + arrWord[i].Length >= len) r += arrWord[i].Substring(0, len - rWordCount) + endString; else r += arrWord[i]; rWordCount += arrWord[i].Length;//计算已经获取到的字符长度 if (rWordCount >= len) break; //搜集已经添加的非单标签,以便封闭HTML标签对 if (i < wordNum - 1) { tmpValue=mchtmlTag[i].Value; if (!rxSingle.IsMatch(tmpValue)) { //不是单标签 if (rxEndTag.IsMatch(tmpValue)&&inputHTMLTag.Count>0) inputHTMLTag.RemoveAt(inputHTMLTag.Count - 1); else inputHTMLTag.Add(tmpValue); } r += tmpValue; } } //替换回实体 for (i = 0; i < mcentiry.Count; i++) r = rxEntityReverse.Replace(r, mcentiry[i].Value, 1); //封闭标签 for (i = inputHTMLTag.Count - 1; i >= 0; i--) r += "</" + rxTagName.Match(inputHTMLTag[i].ToString()).Groups[1].Value + ">"; return r; }
试试其它关键字
同语言下
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
可能有用的
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3