抓取了一个网页,现在要截取字段
" <--开始--> 内容 <--结束--> "
public string HttpString_Filtrate(string Http_String, string Begin_String, string End_String)
{
int Begin_Int = Http_String.IndexOf(Begin_String);
int End_Int = Http_String.IndexOf(End_String);
string ReString = Http_String.Substring(End_Int,Begin_Int);
return ReString;
}
现在要得到内容,我写这个好象不行。。。。。 <--开始--> 和 <--结束--> 为不固定值
解决方案一:
符号保留啊
比如: " <hr> 其它 <--开始--> 内容 <br> 内容 <--结束--> 其它 <hr> "
得到 "内容 <br> 内容 "
解决方案二:写匹配正则表达式
//删除所有的html标记
public static string delHtml(string str)
{
if (str != null && str.Trim() != " ")
return Regex.Replace(str, " <[^> ]+> ", " ");
return str;
}
// 删除字符串中的特定标记
//isContent:是否清除内容
public static string delTag(string str, string tag, bool isContent)
{
if (tag == null || tag == " ")
{
return str;
}
if (isContent) //要求清除内容
{
return Regex.Replace(str, string.Format( " <({0})[^> ]*> ([//s//S]*?)
</////1> ", tag), " ", RegexOptions.IgnoreCase);
}
return Regex.Replace(str, string.Format(@ "( <{0}[^> ]*(> )?)|( </{0}[^> ]
*> )| ", tag), " ", RegexOptions.IgnoreCase);
}
// 删除字符串中的一组标记
//isContent:是否清除内容
public static string delTagArray(string str, string tagA, bool isContent)
{
string[] tagAa = tagA.Split( ', ');
foreach (string sr1 in tagAa) //遍历所有标记,删除
{
str = delTag(str, sr1, isContent);
}
return str;
}
解决方案三:
如果End_String是:
<table width=90% border=0 align=center>
<tr> </tr>
</table>
怎么办?
用SubString个人觉得效率极低,用正则好!有其他方案欢迎指教一二