我的代码是这样的:
public void button1_Click(object sender, EventArgs e)
{
StreamReader tx = null;
if (textBox1.Text != "")
{
tx = new StreamReader(textBox1.Text);
}
else
{
tx = new StreamReader("new.txt");
}
string line;
while ((line = tx.ReadLine()) != null)
{
string url = (line);
string sourceCode = Worker.getSourceCode(url);
MatchCollection m1 = Regex.Matches(sourceCode, @"title may-blank "" href=""(.+?)""", RegexOptions.Singleline);
MatchCollection m2 = Regex.Matches(sourceCode, @"(?<=tabindex=\""1\"" \>| tabindex=\""1\"" rel=""nofollow"" \>)(.+?) (?=<\/a>)", RegexOptions.Singleline);
List<string> adresy = new List<string>();
List<string> nazwy = new List<string>();
int counter = 0;
foreach (Match m in m1)
{
string adres = m.Groups[1].Value;
adresy.Add(adres);
counter++;
label1.Text = counter.ToString();
}
int counter2 = 0;
foreach (Match m in m2)
{
string nazwa = m.Groups[1].Value;
nazwy.Add(nazwa);
counter2++;
label2.Text = counter2.ToString();
}
listBox1.DataSource = adresy;
listBox2.DataSource = nazwy;
}
}
我正在使用RegEx从网页中删除文本。问题是,如果该URL位于textBox1
,我想抓取单个URL。但如果textbox1
为空,我想从new.txt
文件中删除所有网址。
所以......我必须实施“如果”,但我真的不知道如何。我的意思是,它应该是这样的:
if textbox1 is empty
then read from single line
if not, then read from new.txt
do stuff like scraping..
但正如您在我的代码中看到的那样,它是上层的,它无法正常工作。我的意思是它有效,但只有我从new.txt
阅读。当我向textbox1.Text
添加一些文本并尝试抓取URL时,我的应用程序崩溃了。我认为它崩溃了,因为我不应该使用streamreader
来读取textbox
。我不知道。你有什么想法吗?
答案 0 :(得分:0)
如果您想编写这样的代码,那么您可以使用StringReader
:
TextReader tx = null;
if (textBox1.Text != "")
{
tx = new StringReader(textBox1.Text);
}
else
{
tx = new StreamReader("new.txt");
}
确保将代码包装在try / finally块中,并在finally中调用tx.Dispose()
。