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

标签 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"

最佳答案

如果你使用库来做到这一点会更容易,例如你可以看一下 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 解析。

关于c# - C# 将字符串从一个点读取到另一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56965106/

相关文章:

C# 舍入到列表值

c# - 在 Windows Workflow 3.5 中处理异常时如何获取堆栈跟踪?

c# - 将表列中的二进制读入 byte[] 数组

c# - 有什么方法可以在复杂类型上使用 OData $orderby 吗?

c# - 具有 utf-8 文件名的 Zip 文件

c# - 仅在单击时才加载每个子 -"folder"的层次结构 C# 组件?

c# - 比较通过 NetworkStream 发送到服务器/从服务器发送的值

c# - 如何避免 WPF 中的抗锯齿?

c# - 在 C# 中匹配两个大的字符串集

c# - 如何创建属性以检查用户是否拥有 Identity core 2.2 的声明?