首先:抱歉我的英语不好!
我知道标题不是最好的英文,但我真的不知道如何格式化这个问题...
我想要做的是逐行读取一个HTML源代码,这样当它看到一个给定的单词(如http://)时,它会复制整个句子,这样我就可以删除其余的只保留URL。
这是我尝试过的:
using (var source = new StreamReader(TempFile))
{
string line;
while ((line = source.ReadLine()) != null)
{
if (line.Contains("http://"))
{
Console.WriteLine(line);
}
}
}
如果我想从外部文件中读取它,但是当我想读取字符串或字符串构建器时它不起作用,那么它如何工作,你如何逐行阅读?
答案 0 :(得分:6)
您可以new StringReader(theString)
使用string
来执行此操作,但我对您的整体策略提出质疑。使用像HTML Agility Pack这样的工具可以做得更好。
例如,这里是HTML Agility Pack提取所有超链接:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(theString);
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]")
{
HtmlAttribute att = link["href"];
Console.WriteLine(att.Value);
}
答案 1 :(得分:0)
一个字符串只是一个字符串,它没有任何行。
您可以使用String.Split
之类的内容来分隔\r
符号。
MSDN:String.Split()
string words = "This is a list of words, with: a bit of punctuation" +
"\rand a newline character.";
string [] split = words.Split(new Char [] {'\r' });
foreach (string s in split) {
if (s.Trim() != "")
Console.WriteLine(s);
}
答案 2 :(得分:0)
首先,您可以使用StringReader。
另一种选择是通过首先将字符串转换为字节数组从字符串创建MemoryStream,如https://stackoverflow.com/a/10380166/396583
中所述答案 3 :(得分:0)
我认为您可以对输入进行标记,并检查每个条目是否包含所需内容。
string[] info = myStringBuilder.toString().split[' '];
foreach(var item in info) {
if(item.Contains('http://') {
//work with it
}
}
答案 4 :(得分:0)
您可以使用内存流来读取。