当前位置:编程学习 > C#/ASP.NET >>

索引和长度必须引用该字符串内的位置

我的自动搜索里出现:索引和长度必须引用该字符串内的位置.这个错误,就高手指教,代码如下.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
using WindowsCar_Manage.inc.cs;

namespace WindowsCar_Manage.Manage.NewsManage.WindowCarSearchNews
{
/// <summary>
/// GetUrlNews 的摘要说明。
/// 作者:李勇 QQ:33264335
/// </summary>
public class GetUrlNews : System.Web.UI.Page
{
Function objFunction=new Function();
ClSearchNews objNews=new ClSearchNews();
private string GetUrl="";
private string GetId="";
private string strSearchContent="";
private string strTitle="";
private string strContent="";
private string strHzh="";
private const string strMatch=@"http://.+?((gif)|(jpg))";  //得到新闻图片的路径
private string strLocalPath=System.Configuration.ConfigurationSettings.AppSettings["GetNewsPhotoPath"].ToString();

private void Page_Load(object sender, System.EventArgs e)
{
if(Session["Mid"]==null)
{
Response.Redirect("../../../index.aspx");
}
try
{
GetUrl=Request.QueryString["Url"].ToString();
GetId=Request.QueryString["Id"].ToString();
objNews.SiteId=GetId;
objNews.GetSiteDetail();
strSearchContent=objFunction.GetHttpData(GetUrl);
strTitle=objFunction.strCut(strSearchContent,objNews.strTitleStart,objNews.strTitleEnd,2); //得到新闻的标题
strContent=objFunction.strCut(strSearchContent,objNews.strContentStart,objNews.strContentEnd,2);//得到内容
if(objNews.strHzhStart.Trim()!=""&&objNews.strPageEnd.Trim()!="")
{
strHzh=objFunction.strCut(strSearchContent,objNews.strHzhStart,objNews.strHzhEnd,1); //得到要去掉的hzh
strContent = strContent.Replace(strHzh,"");
}
objNews.Title = strTitle;
//---------------------------------------------------------------------------------
//处理内容
if(objNews.strImgReplace.Trim()!=""&&objNews.strImgReplaced.Trim()!="") //如果处理图片连接不为空
{
strContent=strContent.Replace(objNews.strImgReplaced,objNews.strImgReplaced + objNews.strImgReplace);//处理内容中的图片路径
}
//过滤内容中不需要的东西
strContent=objFunction.RegexMatch(strContent,"<a.+?>",1); //去掉连接
strContent=objFunction.RegexMatch(strContent,"</a>",1);   //去掉连接字符
strContent=objFunction.RegexMatch(strContent,"<FORM.+?>",1);//去掉〈/from>
strContent=objFunction.RegexMatch(strContent,"<INPUT.+?>",1);//去掉〈input〉
strContent=objFunction.RegexMatch(strContent,"<iframe.+?</iframe>",1);//过滤iframe
strContent=objFunction.RegexMatch(strContent,"<table.+?</table>",1);//过滤iframe
strContent=objFunction.RegexMatch(strContent,"<SCRIPT.+?</script>",1);//过滤iframe
strContent=objNews.SetNewsContentLink(strContent);//代替内容里面的超级连接
//strContent=objFunction.RegexMatch(strContent,"</iframe>",1);//过滤iframe
//如果把新闻内容的图片抓取,就放在本地/如果不抓取就去掉图片
if(objNews.intCatchPic=="1")
{
strContent=objFunction.CatchContentPhotoToLocal(strContent,strMatch,strLocalPath); //把图片放到本地服务器,并且保存
}
else
{
//strContent=objFunction.RegexMatch(strContent,"<img.+?>",1);//去掉〈input〉
}
//strContent=objFunction.RegexMatch(strContent,"<img.+?>",1);//去掉〈img〉
//结束过滤
objNews.Content = strContent;
//结束处理内容
//---------------------------------------------------------------------------------
objNews.Source = objNews.FromSite;
//objNews.ClassType = objNews.NewsType;
objNews.ClassType = Request.QueryString["strNewsType"].ToString();
objNews.InBase = objNews.intInput;
objNews.ManagerSearchNews("增加");
//-----------------------------------------------------------------------------
//下面检查是否直接发布,如果直接发布,检查是哪类别的新闻,然后插入相应的表中
try
{
if(objNews.intInput=="1") //如果直接发布
{
objNews.GetNewsTypeNameAndTable(Request.QueryString["strNewsType"].ToString().Substring(0,2));
objNews.InputNewsToTable(objFunction.RegexMatch(strContent,"<.+?>",1).Substring(1,50),objFunction.strReturnPhotoName);
}
}
catch
{
}
//-----------------------------------------------------------------------------
Response.Write("<script>alert('增加新闻成功!');window.close();</script>");
Response.End();
}
catch(System.Exception ex)
{
//throw;
Response.Write("<script>alert('增加新闻失败!错误描述:\n" + ex.Message.ToString() +"');window.close();</script>");
Response.End();

}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
--------------------编程问答-------------------- 注意你的 Substring 方法。
看看 使用 Substring 方法的字符串的长度是不是足够长。 --------------------编程问答-------------------- objNews.GetNewsTypeNameAndTable(Request.QueryString["strNewsType"].ToString().Substring(0,2));
objNews.InputNewsToTable(objFunction.RegexMatch(strContent,"<.+?>",1).Substring(1,50),objFunction.strReturnPhotoName);


只有两句有,要怎么改?我增长了,它提示说有参数没定义 --------------------编程问答-------------------- 是数组下标越界了
你增加长度更加是错误的 所以你要截取的长度必须知道 而且不能越界
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,