比如有一段HTML的字符串,
string html= "<body>...............</body>"; string get= betw(html,"<body>","</body>");
我想取从<body>到</body>之间的HTML代码应该怎么取呀?betw(html,"<body>","</body>"); 这句写错了,正确应该是如何写呢?特此请教CSDN的高人!在线等待,5点半前结帖!
string html= "<body>...............</body>"; string get= betw(html,"<body>","</body>");
我想取从<body>到</body>之间的HTML代码应该怎么取呀?betw(html,"<body>","</body>"); 这句写错了,正确应该是如何写呢?特此请教CSDN的高人!在线等待,5点半前结帖!
解决方案 »
- csdn上鼠标移到头像就显示信息
- NetCMS 1.7版本 会员注册代码的JS 搞不明白~高手来指点下~
- 各位,怎么在ASP。NET网页中做一个在线QQ交谈的那种东西,像QQ拍拍一样的!
- asp.net中session如何设置
- 要讨论的这个问题对系统影响很严重,数据库链接问题
- 高分求:已做好的动态导航栏怎样加入动态栏目(类似vs的工具箱)--解决立即给分
- 不是高手别来丢人现眼!如何给Datagrid里的多列dropdownlist赋值????
- 在websphere 中能运行asp.net 么?
- asp.net后台怎样添加弹窗,点击“是”则执行逻辑代码,“否”则不执行?
- 急救:vs.net中怎么也连不上sybase 11.5数据库?
- DropDownList控制的使用问题,急,大哥,帮忙啊!
- 关于使用excel.application的奇怪问题
1. string get = html.SubString("<body>".Length,html.Length-"<body></body>".Length);
2. string get = html.Replace("<body>","").Replace("</body>"),"");如果<body>前或者</body>后还有其它代码:
1. int pos1 = html.IndexOf("<body>");
int pos2 = html.IndexOf("</body>");
string get = html.SubString(pos1+"<body>".Length, pos2);
{
string ret="";
int startTablePos=HTMLContent.LastIndexOf(startStr);
int endTablePos=HTMLContent.IndexOf(endStr);
ret=HTMLContent.Substring(startTablePos,endTablePos-startTablePos+endStr.Length);
ret=ret.Substring(startStr.Length,ret.Length-(startStr.Length +endStr.Length));
return ret;
}
{
string ret="";
int startTablePos=HTMLContent.LastIndexOf(startStr);
int endTablePos=HTMLContent.IndexOf(endStr);
ret=HTMLContent.Substring(startTablePos,endTablePos-startTablePos+endStr.Length);
ret=ret.Substring(startStr.Length,ret.Length-(startStr.Length +endStr.Length));
return ret;
}
或者你去搜索一下吧!
正则可以如此\<body\>([.\n]*?\)<\/body\>
引入命名空间:
using System.Text.RegularExpressions;string s=Regex.Replace(html,@".*<body>|<\/body>.*","");
这段是过滤的, 与我的情况刚好相反,请教一下怎么取<body>与</body>之间的数据,而不是REPLACE,谢谢!
得到的就是两标签之间的数据阿
写成你要的函数如下:
private string betw(string HTMLContent,string startStr,string endStr)
{
string pattern=".*"+startStr+"|"+endStr+".*";
string ret=Regex.Replace(HTMLContent,pattern,"");
return ret;
}另外 你说上面我提供的
private string betw(string HTMLContent,string startStr,string endStr)
{
string ret="";
int startTablePos=HTMLContent.LastIndexOf(startStr);
int endTablePos=HTMLContent.IndexOf(endStr);
ret=HTMLContent.Substring(startTablePos,endTablePos-startTablePos+endStr.Length);
ret=ret.Substring(startStr.Length,ret.Length-(startStr.Length +endStr.Length));
return ret;
}
说 运算符“-”无法应用于“int”和“string”类型的操作数
但我这里没有错误啊 能正常的运行
using System;
using System.Text;
using System.Net;
using System.Text.RegularExpressions;namespace Efun.Common
{
/// <summary>
/// CatchWebContent 的摘要说明。
/// </summary>
public class CatchWebContent
{
public CatchWebContent()
{
/// <summary>
/// CatchWebContent获取指定URL地址的页面内容的HTML代码。
/// </summary>
}
public string ByteGetContent(string strUrl)
{
///<summary>
///字节方式方式读取网页内容,返回网页内容的全部字符,传入要抓取的网页地址
///</summary>
strUrl = FormatString(strUrl); string strContent; if (CheckURL(strUrl))
{
try
{
WebClient myclien = new WebClient();
byte[] myData; myData = myclien.DownloadData(strUrl);
strContent = System.Text.Encoding.Default.GetString(myData).ToString().Trim(); return strContent;
}
catch(System.Exception Ex)
{
return Ex.Message.ToString();
}
}
else
{
return "您输入的地址不正确";
}
}
public string ByteGetContentClean(string strUrl)
{
///<summary>
///字节方式读取网页内容,返回网页过滤掉HTML标签后内容的字符(保留<br>标记),传入要抓取的网页地址
///</summary>
string strContent;
strContent = ByteGetContent(strUrl);
// strContent = Regex.Replace(strContent.ToLower(),@"[^(<body>(.|\n)*<\/body>)]","");
strContent = Regex.Replace(strContent.ToLower(),@"(?!<br>|<br\/>)<.*?>","");
return strContent;
}
public string StreamGetContent(string strUrl)
{
///<summary>
///流方式读取网页内容,返回网页内容的全部字符,传入要抓取的网页地址
///</summary>
strUrl = FormatString(strUrl); if (CheckURL(strUrl))
{
try
{
string strContent;
WebClient myclien = new WebClient(); System.IO.StreamReader mystream = new System.IO.StreamReader(myclien.OpenRead(strUrl),System.Text.Encoding.GetEncoding("gb2312"));
strContent = mystream.ReadToEnd().ToString().Trim(); return strContent;
}
catch(System.Exception Ex)
{
return Ex.Message.ToString();
}
}
else
{
return "您输入的地址不正确";
}
}
public string StreamGetContentClean(string strUrl)
{
///<summary>
///流方式读取网页内容,返回网页过滤掉HTML标签后内容的字符(保留<br>标记),传入要抓取的网页地址
///</summary>
string strContent;
strContent = StreamGetContent(strUrl);
// strContent = Regex.Replace(strContent.ToLower(),@"[^(<body>(.|\n)*<\/body>)]","");
strContent = Regex.Replace(strContent.ToLower(),@"(?!<br>|<br\/>)<.*?>","");
return strContent;
} private bool CheckURL(string strUrl)
{
///<summary>
///检测输入的地址格式
///</summary>
if (Regex.IsMatch(strUrl,@"(\s|\n|^)(\w+://[^\s\n]+)"))
{
return true;
}
else
{
return false;
}
}
private string FormatString(string strUrl)
{
///<summary>
///检测输入的地址格式有没有包含URL前缀
///</summary>
if (strUrl.ToLower().Substring(0,7) != "http://")
{
strUrl = "http://" + strUrl;
}
return strUrl;
}
}
}