如果之前如何实施

时间:2016-02-27 21:48:56

标签: c#

我的代码是这样的:

 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。我不知道。你有什么想法吗?

1 个答案:

答案 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()