(支持截取带HTML代码样式的字符串)
来源:互联网 发布:ubuntu 17.10 qt gtk 编辑:程序博客网 时间:2024/05/16 16:11
/*
* 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
* @param param 将要截取的字符串参数
* @param length 截取的字节长度
* @param end 字符串末尾补上的字符串
* @return 返回截取后的字符串
*/
public static string subStringHTML(string param,int length,string end)
{
string Pattern = null;
MatchCollection m = null;
StringBuilder result = new StringBuilder();
int n = 0;
char temp;
bool isCode = false; //是不是HTML代码
bool isHTML = false; //是不是HTML特殊字符,如
char[] pchar = param.ToCharArray();
for (int i = 0; i < pchar.Length; i++)
{
temp = pchar[i];
if (temp == '<')
{
isCode = true;
}
else if (temp == '&')
{
isHTML = true;
}
else if (temp == '>' && isCode)
{
n = n - 1;
isCode = false;
}
else if (temp == ';' && isHTML)
{
isHTML = false;
}
if (!isCode && !isHTML)
{
n = n + 1;
//UNICODE码字符占两个字节
if (System.Text.Encoding.Default.GetBytes(temp + "").Length > 1)
{
n = n + 1;
}
}
result.Append(temp);
if (n >= length)
{
break;
}
}
result.Append(end);
//取出截取字符串中的HTML标记
string temp_result = result.ToString().Replace("(>)[^<>]*(<?)","$1$2");
//去掉不需要结素标记的HTML标记
temp_result = temp_result.Replace(@"</?(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/?>",
"");
//去掉成对的HTML标记
temp_result=temp_result.Replace(@"<([a-zA-Z]+)[^<>]*>(.*?)<//1>","$2");
//用正则表达式取出标记
Pattern = ("<([a-zA-Z]+)[^<>]*>");
m = Regex.Matches(temp_result,Pattern);
ArrayList endHTML = new ArrayList();
foreach(Match mt in m)
{
endHTML.Add(mt.Result("$1"));
}
//补全不成对的HTML标记
for (int i = endHTML.Count - 1; i >= 0; i--)
{
result.Append("</");
result.Append(endHTML[i]);
result.Append(">");
}
return result.ToString();
}
http://www.cnblogs.com/yhlwsg/archive/2008/07/15/1243676.html
- (支持截取带HTML代码样式的字符串)
- 支持截取带HTML代码样式的字符串
- 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
- 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
- 按字节长度截取字符串(支持截取带HTML标签的字符串,并自动补全)工具类
- java实现带HTML代码的文章摘要截取
- 截取带HTML的内容
- 截取带汉字的字符串
- JAVA过滤HTML代码和截取字符串的类
- php读取html并截取字符串的代码
- 截取字符串长度 不算html代码的长度
- java截取带html标签的字符串并把标签补全(保证格式)
- java截取带html标签的字符串,再把标签补全(保证页面显示效果)
- java截取带html标签的字符串,再把标签补全(保证页面显示效果)
- java截取带html标签的字符串,再把标签补全
- DIV通过样式控制字符串的截取
- 字符串截取的常用代码
- 代码中字符串的截取
- java匹配IP正则表达式
- 关于Asp.net的母版页的几点操作
- dialog 中 call web dynpro
- Asp.NET导出Excel文件乱码解决若干方法
- 查看端口号是否被占用情况
- (支持截取带HTML代码样式的字符串)
- js对象插入表格行,用于修改
- JTAPI TerminalConnection Object States
- Javascript日历类和实例
- MYSQL命令大全(转帖学习)
- 我是一个笔记本硬盘
- 枚举类笔记
- left join & right join $inner join ......
- 俞敏洪经典语录