繁体   English   中英

用StringReader分割C#

[英]C# split with StringReader

我的方法没什么问题。 所以首先我从我的硬件加载一个html网站。 它有点小,但是:这是来自网络的代码:

 <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <p>001;20151006;0000;1800;1000;999;1;</p> <p>001;20151006;0100;1300;990;999;1;</p> <p>001;20151006;0200;1100;1000;999;1;</p> <p>001;20151006;0300;1500;1100;999;1;</p> <p>001;20151006;0400;2200;500;999;1;</p> <p>001;20151006;0500;1900;100;999;1;</p> <p>001;20151006;0600;0700;990;999;1;</p> <p>001;20151006;0700;0300;998;999;1;</p> </body> </html> 

我只需要拿身体并在第二排和第三排加载yyyyMMdd HH:mm。 所以这是我的代码:

 char[] pommidChar = { ';' };
WebRequest request = WebRequest.Create(
              "http://localhost:49443/Wyniki.html");

        request.Credentials = CredentialCache.DefaultCredentials;

        WebResponse response = request.GetResponse();
       Console.WriteLine(((HttpWebResponse)response).StatusDescription);

        Stream dataStream = response.GetResponseStream();

        StreamReader reader = new StreamReader(dataStream);

        string responseFromServer = reader.ReadToEnd();

        //  Console.WriteLine(responseFromServer);

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(responseFromServer);
        // Console.WriteLine(doc);



        string formatString = "yyyyMMddHHmm";//201510060000;
        reader.Close();//   = "201510060000"
        response.Close();
        string[] slowa;

        string tekst ;
        foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//body"))
        {

            string temp = "";
            Console.WriteLine(node.InnerText);
            id = node.InnerText;
            tekst = node.InnerText;
            //Console.WriteLine("Node"+node.ToString());
            slowa = id.Split(pommidChar);
            temp = slowa[1] + slowa[2];
            //Console.WriteLine(slowa[30]);
            Console.WriteLine("string pobrany ze strony"+temp);
            DateTime dt = DateTime.ParseExact(temp, formatString, CultureInfo.InvariantCulture,
                                    DateTimeStyles.None);

            Console.WriteLine("Ostatnia dana z parse:" + dataParse1.ToString("yyyy-MM-dd HH:mm"));
            Console.WriteLine("Aktualna pobrana z urzadzenia:" + dt.ToString("yyyy-MM-dd HH:mm"));

现在在tekst中,我有// body的字符串,因此我想一行一行地读取和copmare date:

using (StringReader readerr = new StringReader(tekst))
        {
            string[] splitline;
            string line;

            while ((line = readerr.ReadLine()) != null)
            {

               Console.WriteLine(line);

               splitline = line.Split(pommidChar);

              //  Console.WriteLine(splitline[0]);
                Console.WriteLine(splitline[1]);

            }
            readerr.Close();
        }

但是,这是线索。我在“ splitstring”中只有1个字符串,它的001。 所以有人可以形容我其他人在哪里? 这项工作slowa = id.Split(pommidChar); 工作并准确地分割我想要的东西,但是我不能逐行阅读。

我通过了这个问题,因为已经完成了。 现在我还有一个愚蠢的问题要问某人。 我来自大学的博士更改从网络中获取代码。 现在所有变量(html代码)都设置在1行中

 <body> <pre><br>001;20151006;000034;1800;1000;999;1<br>001;20151006;000035;1800;1000;999;1;<br>001;20151006;000036;1800;1000;999;1;</pre> </body> 

因此,我如何从BR标签中取出字符串。 我的解决方案是将它们全部排成一排。 我本以为用长字符串进行循环是好的。 我错了,因为我不知道我必须得到多少弦。 请记住,1个“ quete”以“ 001”开头,以“ 1”结尾。 我尝试将节点作为

HtmlNode node in doc.DocumentNode.SelectNodes("//body/pre/br")

但这不起作用。

您需要选择P标签...我希望像SelectNodes("//p")SelectNodes("//body/p")而不是选择单个body元素(作为内部文本包含所有元素的串联) P标签中的字符串)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM