2012-12-13 59 views
0

网络请求正常工作,一切都按计划进行,但由于某种原因,我似乎无法抓住并删除一块字符串。下面的删除是一个很多的尝试,通过字符串解析并删除标签和文本

我没有我的人的来源,所以我会尝试重新创建它。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 
using System.Text; 
using System.IO; 

public partial class test : System.Web.UI.Page 
{ 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     StringBuilder sb = new StringBuilder(); 

     byte[] srs = new byte[8192]; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http:"+//mywebsite.com/getsearchresults/page.aspx="+ result["x"]); 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

     Stream xStream = response.GetResponseStream(); 

     string myString = null; 
     int count = 0; 

     do 
     { 
      count = xStream.Read(srs, 0, srs.Length); 
      if (count != 0) 
      { 
       myString = Encoding.ASCII.GetString(srs, 0, count); 
     //regex ismatch = new myString.regex (@"\The Following Results Are\b") 
     //ismatch = regex.replace("The Follwing Results Are","",1);   
        sb.Append(myString); 
       } 
      } 
      while (count > 0); 
      printresults.Text = sb.ToString(); 

     } 

    } 

} 
+3

Err ...你的代码有点混乱。虽然仍然可以理解,但很明显,这是行不通的。但由于拼写错误的数量,很难说出实际错误。所以我想如果你提交了一些可编译的代码会有帮助。 –

+0

另外一个解释会有很长的路要走。 – RBarryYoung

+0

与工作有关的代码im的唯一部分是删除“以下结果”的部分,正如我所说我没有访问代码,所以我从内存中写入代码。它的一切工作正常接受字符串操作。我不知道这是否有帮助。当我写这个问题的网站超时,所以我的解释似乎已经失踪。 (我需要从传入的html中抓取几个字,并删除它们,但没有一个类,所以我不能通过它们的标签或类名抓取它们) – user1902540

回答

0

那么您的RegEx是错误的。我不明白你期望的模式@"\The Followin Results Are\b"匹配“Follwing结果是”

有几个问题,首先,模式开始于\这是不是在输入,我相信这只是被解释为文字。 \t会匹配一个标签,但它不在输入中,所以这两种方法都是错误的。第二个问题是\b匹配退格或单词边界。我不认为这会在这里工作,因为输入结束于该单词的末尾,并且当您有\w\W(单词字符后跟非单词字符)时,单词边界找到匹配。这里没有边界,因为那里是输入的结尾。

除非您非常关心多次出现“以下结果”,否则您应该简单地调用string.Replace这样的方法;

string foo = oldString.Replace("The Following Results Are", System.String.Empty); 

如果您需要确保只有第一次出现被替换,您应该做;

RegEx rgx = new RegEx("The Following Results Are"); 
string foo = rgx.Replace(oldString, System.String.Empty, 1); 
+0

即时通讯不只是想通过请求的html读取并获得摆脱“以下结果”,然后吐在页面 – user1902540

+0

好吧谢谢你的帮助,不明白我能做些什么,并相应地更新 – user1902540

+0

@ user1902540这些建议都应该解决它。您的RegEx完全错误。它不符合“以下结果”匹配“*从此选项卡* *以下结果是*到这个词的开头,包括空格*” – evanmcdonnal