如何从字符串转义引号?

本文关键字:转义 字符串 | 更新日期: 2023-09-27 18:16:08

我有这个例子:

<a href="/Forums2008/forumPage.aspx?forumId=393" title="מזג האוויר">מזג האוויר</a>

我首先要解析的是forumId=393然后是393和链接最后是名字在这里是hebrew所以这里有点乱名字应该是:

מזגהאוויר

我可以使用indexof和substring或html lagilitypack,我更喜欢html lagilitypack来获得所有三个值,也许正则表达式也是一个好方法。

最后我应该得到这四个字符串:

  1. forumId = 393

  2. 393年
  3. מזגהאוויר

  4. /Forums2008/forumPage.aspx吗?forumId = 393

我尝试到目前为止,它甚至不接近我的目标是一次与htmllagilitypack和其他下载html保存为文件,然后解析它我认为使用索引和子字符串,但不确定如何:

HtmlAgilityPack.HtmlDocument doc =
                        Qhw.Load("http://www.tapuz.co.il/forums/forumslistnew.asp");
parseIds(doc);
WebClient webclient = new WebClient();
webclient.DownloadFile("http://www.tapuz.co.il/forums/forumslistnew.asp",
                        @"c:'testhtml'mainforums.html");
webclient.Dispose();
string[] lines = File.ReadAllLines(@"c:'testhtml'mainforums.html");
foreach(string line in lines)
{
    if (line.Contains("href") && line.Contains("forumId=") && !wholeids.Contains(line))
    {
        string tg1 = "href="";
        wholeids.Add(line);
    }
}
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{   
    idsnumbers.Add(link.InnerText);
}

idsnumbers是List全局变量

如何从字符串转义引号?

我将使用HtmlAgilityPack, Uri.TryCreateParseQueryString:

string html = @"<a href=""/Forums2008/forumPage.aspx?forumId=393"" title=""מזג האוויר"">מזג האוויר</a>";
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(html);
var anchor = htmlDoc.DocumentNode.Descendants("a").FirstOrDefault();
if(anchor != null)
{
    string name = anchor.InnerText;
    string href = anchor.Attributes["href"].Value;
    Uri uri;
    if(Uri.TryCreate(href, UriKind.RelativeOrAbsolute, out uri))
    {
        var queryString = href.Substring(href.IndexOf('?')).Split('#')[0]; // because of relative uri
        var queryKeyValues = System.Web.HttpUtility.ParseQueryString(queryString);
        string forumId = queryKeyValues["forumId"];
    }
}

你也可以创建一个假的绝对uri来避免字符串方法:

if(Uri.TryCreate(href, UriKind.RelativeOrAbsolute, out uri))
{
    if(!uri.IsAbsoluteUri)
        uri = new Uri(new Uri("http://www.google.com/"), uri);
    var queryKeyValues = System.Web.HttpUtility.ParseQueryString(uri.Query);
    string forumId = queryKeyValues["forumId"];
}