我在读取字符串时遇到问题,我将解释该问题:
我有这段代码来读取网页并将其放入字符串中:
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/