从一个点到另一个C#读取字符串

时间:2019-07-10 07:04:12

标签: c#

我在读取字符串时遇到问题,我将说明问题:

我有以下代码可读取网页并将其放入字符串中:

System.Net.WebRequest request = System.Net.WebRequest.Create(textBox1.Text);

using (System.Net.WebResponse response = request.GetResponse())
{
    using (System.IO.Stream stream = response.GetResponseStream())
    {
        using (StreamReader sr = new StreamReader(stream))
        {
            html = sr.ReadToEnd();
        }
    }
}

现在,我只想使用此字符串的某些部分,我该怎么办,如果我使用子字符串,它不会采用选定的片段。

子字符串代码示例:

Name = html.Substring((html.IndexOf("og:title")+19), (html.Substring(html.IndexOf("og:title") +19).FirstOrDefault(x=> x== '>')));

我希望它在“ og:title”之后开始并转到“>”,但是它不起作用。

结果是示例:

"Valchiria “Intera” Pendragon\">\n<meta property=\"og:image\" conte"

1 个答案:

答案 0 :(得分:2)

如果您使用库来执行此操作会更容易,例如可以查看this

如果我理解您的要求,您的代码应如下所示:

static void Main(string[] args)
{
    const string startingToken = "og:title\"";
    const string endingToken = "\">";

    var html = "<html><meta property=\"og:title\" Valchiria “Intera” Pendragon\">\n<meta property=\"og:image\" content></html>";

    var indexWhereOgTitleBegins = html.IndexOf(startingToken);
    var htmlTrimmedHead = html.Substring(indexWhereOgTitleBegins + startingToken.Length);

    var indexOfTheEndingToken = htmlTrimmedHead.IndexOf(endingToken);

    var parsedText = htmlTrimmedHead.Substring(0, indexOfTheEndingToken).TrimStart(' ').TrimEnd(' ');

    Console.WriteLine(parsedText);
}

请注意,您还可以使用正则表达式在更少的代码行中实现相同的功能,但是管理正则表达式并不总是那么容易。

看看这个答案: Parsing HTML String

您的问题标题可能不正确,因为它看起来更特定于HTML解析。