我在读取字符串时遇到问题,我将说明问题:
我有以下代码可读取网页并将其放入字符串中:
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"
答案 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解析。